I think it worth noting that this person has lied to you repeatedly through your relationship. Why is that important? Because when he says that any other woman would be fine with this behavior – HE IS LYING. When he says that you won’t find anyone better – HE IS LYING. When he says anything – HE IS LYING. He’s not just lying when he gets caught being a shithead. He’s lying as a means to control you. Nothing that comes out of his mouth can be considered true or valid. Nothing.
Take all the shit that he’s said over the last two years and dismiss it in total. I know that’s unrealistic, but you are so much more than he says. You have more strength than you realize. You need to get yourself into therapy and find out why you put up with this. You should live without a constant barrage of negativity from a fuckweasel like your boyfriend, but I think you need to do some tough work to make sure you never allow someone to treat you so shabbily in the future.