Mybatis中resultMap的Colum和property属性

1: resultMap标签

当我们的数据库字段与实体类的属性不一致时,就需要使用该标签进行一一映射。

2:使用情况

2.1 简单查询
 <resultMap id="这个resultMap的id" type="对应实体类的全限定类名">
         <id column="id" property="id">id>
        <result column="username" property="name">result>
        <result column="author" property="author">result>
        <result column="number" property="number">result>
       .............
       colum对应数据库的字段,property对应实体类的属性
    resultMap>

他表示对数据按照什么样的规则进行一一映射,如:

  
    <select id="SelectbooksByNumber" parameterType="String"  resultMap="名字">
        select * from book where number=#{number};
    select>

上面的查找结果按照你给的resultMap的对应规则进行映射。

2.2 一对一

需要注意的是你sql语句查出来的列名称是别名,那你就要填别名,就不是你数据库的列名称了。

返回结果:User
User中含有Role属性集合 一对多的关系
JavaType是用来指定pojo中属性的类型

    <resultMap id="userMap" type="com.sweet.shiro.entry.User">
        <id column="uid" property="id"/>
        <result column="username" property="username"/>
        <!--角色信息-->

        <!-- 一对一 -->
        <association property="role" javaType="com.sweet.shiro.entry.Role">
            <id column="id" property="id"/>
            <result column="rname" property="name"/>
        </association>
2.3 一对多

同样和一对一 一样需要注意列名称。

返回结果:User
User中含有Role属性集合 一对多的关系
JavaType是用来指定pojo中属性的类型,
ofType指定的是 映射到list集合属性中pojo的类型
其中Role属性集合为List

    <resultMap id="userMap" type="com.sweet.shiro.entry.User">
        <id column="uid" property="id"/>
        <result column="username" property="username"/>
        
        <collection property="roles" javaType="list" ofType="com.sweet.shiro.entry.Role">
            <id column="id" property="id"/>
            <result column="rname" property="name"/>
        collection>
    resultMap>

    <select id="findRolesByUserName" parameterType="String" resultMap="userMap">
         select u.id uid ,u.username,r.id,r.`name` rname
         from t_user u
         LEFT JOIN t_user_role ur
         on u.id = ur.roleId
         LEFT JOIN t_role r
         on ur.roleId = r.id
         where u.username = #{username}
    select>

pojo

public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private String salt;
    private Integer status; // 用户状态 0: 正常   1:禁用   2:锁定

    //角色集合
    private List<Role> roles;

role表

Mybatis中resultMap的Colum和property属性_第1张图片
user表
Mybatis中resultMap的Colum和property属性_第2张图片
user与role的映射表
Mybatis中resultMap的Colum和property属性_第3张图片

你可能感兴趣的:(Mybatis,mybatis)