mybatis写sql语句有两种方式,一种是xml文件式开发,一种是注解式开发
当数据库中表的字段名和实体类的属性名不一致时,就需要起别名了
如:
数据库中有个User表中有一个name字段,
实体类中有一个User类中有一个username属性
最粗暴的方法是在sql语句中用as起别名
select name as username from User;
下面讲讲别的方法
xml文件式开发中的结果映射
resultMap和resultType用在xml文件式开发中,需要起别名就用resultMap,不需要就用resultType
注解式开发中的结果映射
先用@Results和@Result
@Results(id="UserResults", value={
// column是数据表的字段名, property是实体类的属性名
@Result(column = "name", property = "username"),
})
@Select("select name from User")
当然,在一个mapper.java文件中很多时候不会只有一个方法的sql语句需要起别名,所以要用@ResultMap()实现代码复用
// @ResultMap(id)
@ResultMap("UserResults")
ResultMap引用的是上一个sql语句的别名,所以用了上一个sql语句Results的id
在ResultMap源码中可以看出,ResultMap的value值是一个String数组,说明ResultMap可以使用多个sql语句的Results的起别名方式,实现代码复用