Mybatis中resultMap的Colum和property怎么用

2023-05-12,

本文小编为大家详细介绍“Mybatis中resultMap的Colum和property怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis中resultMap的Colum和property怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    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中属性的类型

    2.3 一对多

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

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

    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表

    user表

    user与role的映射表

    resultMap对column和property的理解

    首先,先看看这张图,看能不能一下看明白:

    select元素有很多属性(这里说用的比较多的)

    • id:命名空间唯一标识,可以被用来引用这条语句

    • parameterType:将会传入这条语句的参数类的完全限定名或者别名

    • resultType:从这条语句要返回的期望类型的类的完全限定名或别名(这里注意下集合类型,应该是集合可以包含的类型,不能是集合本身),重要:使用resultType或resultMap,但不能同时使用。

    • resultMap:命名引用外部的resultMap,其名称要和外部的resultMap元素的ID名称一致,用于映射其结果到实体类指定对象中。

    什么时候我们知道使用resultMap,什么时候又使用resultType呢?

    ①当去select一张表时,可以使用resultType,这些情况下,MyBatis会在幕后自动创建一个ReusltMap,基于属性名来映射到JavaBean属性上

    ②所以在使用resultMap时,就必须要写上resultMap相对应的xml

    ③为了方便我们开发出错,在没有特别要求的情况下,column名可以完全和property名称一致,否则当我们没有对应上的时候,数据库匹配不到,会将某某参数值变为大写,导致我们本来获取小写的参数名,结果没有获取到,后台报错,得不偿失啊!

    最后说下

    sql中比如,有 andm.id = #{id ,jdbcType=VARCHAR } 要标明jdbcType为什么呢?

    解释:

    如果你映射了一个javabean,MyBatis通常可以断定类型(项目里好多都要写,我也不知道为啥),然而,如果你映射到的是比如:HashMap,那么应该明确指定的jdbcType来保证所需的行为

    读到这里,这篇“Mybatis中resultMap的Colum和property怎么用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注本站行业资讯频道。

    《Mybatis中resultMap的Colum和property怎么用.doc》

    下载本文的Word格式文档,以方便收藏与打印。