Why is xs:integer mapped to BigInteger?

The XSD standard defines xs:integer is as an unbound decimal, so it needs to be mapped to a BigInteger.

If you want to use 'int', then you would need to change your XSD to use xs:int which is defined as a signed 32-bit integer, so it can be mapped to an 'int'.