There is a difference. The difference lies in the usage of those two expressions.
Ich habe...gern is more commonly used with people. Like "Ich habe dich gern/Ich habe sie gern" and so forth whereas "Ich mag" is more widely used with all kinds of different things. Objects, persons, animals, just everything. You can say "Ich mag sie/Ich mag Käse/Ich mag meinen Hund/Ich mag es, zu schwimmen" and a bunch of other things.
So both mean that you like something, but the usage as well as the grammatical background is different.