每一个Map中都存储着
一个Map相当于一个对象,那么如果返回多个对象时,对应的Mapper接口中的返回值类型就应该写成List
的形式,
MyBatis 的每一次查询映射的返回类型都是 resultMap,查询的时候会将数据库中列数据复制到对象的相应属性上。
当我们返回类型属性是 resultType 的时候,MyBatis对自动的把对应的值赋给 resultType 所指定对象的属性。
所以当 resultType="java.util.Map" 时,不用在多表关联中配置对应的关系,SQL随意写,直接获得返回的属性值。
多表联查比较方便的 ~
在遍历取数据时,(1)先遍历List<>拿到Map<>,然后在通过map.keySet()拿到key,通过map.get(key)得到value值
(2)可以直接使用map.get("id"),map.get("name")获取到对应的value.
resultType 返回类型为 java.util.Map时,如果查询出来的字段(包括别名)值为空时,mybaitis是不会映射到的,也就是你的map对象不会有值为null时的这个属性。,你可以使用Mysql 中的ifnull函数或者是Oracle中nvl函数
ifnull(expr1,expr2)如果expr1为null,则返回2,否则返回expr1
参考文章
发表评论