解决mybatis中字段名与实体类属性名不一致的三种方式
在使用mybatis来持久化数据库时,常常会碰到数据库中表中的字段与java实体类中属性名不一致的情况,在这种情况下mybatis是不能完成字段的自动映射的。而通常情况下,数据库及实体类是不应该被改的的。所以要在不改变数据库以及实体类的情况下解决这个问题,下面是解决该问题的三种方式:
java实体类:
1.既然是因为名字不一致而导致mybatis不能完成自动映射,那么就可以将两者的名字想办法保持一致,为查询出的数据库字段起个别名就可以
2.另一种解决名字不一致的方式是事先指定映射关系,这样mybatis也能自动完成映射。mybatis提供了resultMap可以指定映射关系,示例如下:
3.在通常情况下,java中的实体类中的属性一般是采用驼峰命名命名的,而数据库中表的字段则用下划线区分字母。在这种情况下,mybatis提供了一个全局属性mapUnderscoreToCamelCase来解决两者名字不一致的问题
注意:因为该属性是全局属性,所以需要配置在mybatis的配置文件中,而不是mapper.xml映射文件中。