MyBatis的ResultMap

来源:互联网 发布:冯满天知乎 编辑:程序博客网 时间:2024/06/03 20:38

为什么需要有ResultMap

正常情况下,如果数据库中的columnName与自己定义的javaBean中的属性名不一致的话,是不能进行column到javaBean的属性的绑定的,例如
java中的User的Bean

public class User {    private int id;    private String username;    private Date birthday;    //mysql中的char类型映射到java的String类型???    private String sex;    private String address;}

数据库:
这里写图片描述

假如select是这样的:

    <select id="findUsers" parameterType="UserQueryVo" resultType="user">        select id ,username username_,birthday birthday_,sex sex_,address address_        from user where username like '%${user.username}%'    </select>

那么此时查询的结果就是id都会被正确的赋上值,但是别的属性的值都为null
这里写图片描述

使用Resultmap解决上面的问题

<mapper namespace="com.njust.ml.map.UserMap">    <resultMap id="userMap" type="user">        <!--id:数据记录的主键            column:数据库中的列的名称            property:javaBean的属性的名称-->        <id column="id"  property="id"/>        <result column="username_" property="username"/>    </resultMap>    <!--因为这个userMap是定义在这个文件里面的,所以可以直接使用,否则应该加上namespace-->    <select id="findUsers" parameterType="UserQueryVo" resultMap="userMap">        select id ,username username_,birthday birthday_,sex sex_,address address_        from user where username like '%${user.username}%'    </select></mapper>

总结

ResultMap主要用于那些数据库中的列名与javaBean中的属性值不一样的情况

原创粉丝点击