首页 > 其他 > 详细

Mybatis之ResultMap,ResultType总结

时间:2020-06-08 12:46:01      阅读:58      评论:0      收藏:0      [点我收藏+]

调用mapper查询数据时,一般来讲,需要搞清楚返回集与返回类型的区别:

一:ResultMap

       实际上对于数据库表而言,通常会为其自动生成一组model类,继承基础抽象类方法的mapper,以及对应的mapping实现文件,其中ResultMap在基础mapping文件很常见,值被设置为BaseResultMap,下面以一个省略get/set方法的简单model类为例:

public class User{
private Integer id,

private String userName,
}

 

<mapper namespace="UserMapper" >
  <resultMap id="BaseResultMap" type="User" >
    <id column="id" property="id" jdbcType="Integer" />
    <result column="user_name" property="userName" jdbcType="String" />
  </resultMap>
</mapper>

 

    数据库字段分别对应id,user_name,那么基础mapping文件中会存在如下映射,id对应id,userName对应user_name;即当ResultMap中使用BaseResultMap时,mybatis会自动根据字段设置映射关系,无需将数据库字段更改成为符合类属性名的别名,后调用model类的set方法进行实例化,免去了手动设置的问题。

二:ResultType

     ResultType比较特殊,用来指定一个方法返回字段的类型,可以是Integer,Long,String等,也可以用来指定model类(不一定是该mapper对应model),map集合等,没有明显限制。当使用ResultType作为返回集的时候,就需要注意一些问题了,如果是Integer这样的包装类,由于对返回类型的指定,需要对SQL查询结果进行Java类型转换,可能会出现无法转换为该类型;

    当以model类作为返回类型的时候,需要手动将字段更改别名,myba才能识别并将属性注入到实体类,当以数据库字段直接返回时,会出现部分属性在数据库中有值,但是返回后却出现空指针异常,也正是这个原因;

    当以map作为返回形式的时候,方法返回形式通常是Map<String,Object>,具体返回包括HashMap,TreeMap等,字段名作为key,value以Object的形式,映射至map集合中,具体类型需要开发者自行判断,但是不建议这种形式,魔法值作为key是非常不规范的,也难以阅读。

 

Mybatis之ResultMap,ResultType总结

原文:https://www.cnblogs.com/hli-tech/p/13064983.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!