Don't know how to move on.

I've been with my boyfriend 2.5 years now. In that time we have broken up twice because he can be very selfish in the relationship - never thinks of me e.g if he is going to get himself a drink or food, he won't ever offer to get me anything, will just come back with a drink for him, or he will want me to plan all trips/days together and gets upset when I ask him to look for things for us to do, and I just get sick of always giving and being caring and getting little in return. However each time I made the decision to break up, we got back together as he always says he will change and knows how to play me. But nothing has changed and I feel like I am settling for him because it is what I am used to but he has never ever done anything special for me and I kind of want to be with someone who has mutual respect and similar values to me. I know I need to end it and stop being weak but it is hard when you love someone. The problem is we work together so when we aren't together I still have to see and talk to him maybe 4/5 days a week, and each time I have been through this before he always breaks me down, says and does all the right things til he knows I am sold then the whole cycle repeats itself. How do I break the cycle and move on completely from him without having to leave my job (which I like and am not ready to leave)? I feel like I need a fresh start from him but am happy at work.