Generic Repository without Entity Framework
I think you are in the right direction but let me suggest some things.

Remove the try catch and let the repository throw the exception. Either that or catch and throw your own exception.

Inject IDbConnection in the constructor of the repository and remove the using on the repository methods

    private IDbConnection _connection;

    public CustomerRepository(IDbConnection connection)
    {
        _connection = connection;
    }


Probably you want to use the repository in this way in many scenarios and with your current implementation you lose the transaction scope.

    public void DoWork()
    {
        using (var connection = ...)
        {
            //begin transaction
            var repository = new CustomerRepository(connection);
            var otherRepository = new OtherRepository(connection)
            var customer = repository.GetById(2);
            //do some stuff
            otherRepository.Update()...
            repository.Delete(customer);
            //commit transaction
        }
    }


This can be combined with IoC container.