今天碰到一个问题,我有一个java Bean在业务中需要限制除了第一次初始化,之后不允许修改其值,正常的只需要将这个属性的访问权限设置为private,然后不写set方法,只在构造器中初始化,也就是只有在创建这个对象时才会对这个属性进行赋值,就可以将这个属性进行封装。
后面再引入mybatis,它的原理是先用bean的无参构造器进行对象创建,然后调用属性的set方法进行映射赋值,那么我这个类就没法做封装了,这里是不是可以说mybatis强制性破坏了这个类的封装。
解决办法:
1.建两个类,一个仅用于mybatis映射返回对象,然后再手动包装到具备封装性的类,相当于做一个类包装,Bean.class convert BeanWarpper.class
2.mybatis能不能通过有参构造器进行映射,查询的列名按照构造器的参数名进行映射?