Oh my God I just wrote the longest post and the page updated and deleted it 
Rachey we started with DS1 when he was about 3 and a half, but we've been doing it for ages so I can't really remember. I don't think 3 year olds have the emotional awareness or intelligence to equate their bad behaviour with how you feel. He can understand why Mary is upset, he bit Mary - he didn't bite you therefore probably can't quite get his head around why you are upset. That sort of thinking comes in time, but it will drive you crackers trying to make him see it from your perspective.
You could try an empathy story with him. Ask him how would he like it if Mary bit him? Would it hurt? Why, is it because teeth are sharp? Would he feel sad/angry/sore? Does he think maybe that's how Mary felt after he bit her? Would he like it if Mary said sorry if she bit him? Would he like it if Mary never bit him?
All this should be done in a calm, nice conversation giving him the time to listen and understand your question, then answer. So pick a time of the day when he is a bit chilled out.
Then you could come up with a solution for the next time he feels like biting Mary or anyone else. So replay the events leading up to the biting and say "Ok, well next time Mary does that, what should you do instead?" Prepare yourself for a bizarre answer, kids aren't known for rational thinking and incorporate the answer in to your response.
"Yes, BabyRach I know you want to shove Mary off the slide, but what if you went and told your teacher that Mary was annoying you/shoving you/taking your toy, that would be the best idea wouldn't it? I bet your teacher would be so happy to know Mary was being naughty so she could deal with her and then only Mary will be in trouble isn't that right? And it is teachers job to sort out naughty children, teacher just wants you to have fun/do your work, doesn't she? Yeah, let teacher sort out Mary and you can have a great day!"
The reason every sentence ends in a question is to give your DS the opportunity to disagree or to agree. It will reinforce the sentence in his mind and hopefully it will stick with him. It won't work immediately, he might need a few reminders. So on the way to school you could run through it again with him
"So BabyRach, what will you do if someone is annoying you?" pause to let him answer. "Yes, you will tell the teacher. We want you to have a good day don't we?" Pause. "Yes we do. Let the teacher deal with naughty behaviour, you just let her know. Great idea BabyRach"
I hope it works. I have worked with many a biter in all my years in childcare and it's usually done out of absolute frustration so you need to give your DS the tools to seek help before the biting occurs. It's a hard habit to break so it might take a few goes of the story and solution to get through.