zoukankan      html  css  js  c++  java
  • 浅谈MyBatis之Mapper文件

    今天想写一下关于Mapper文件的解读,主要流程是参考Mapper官方文档

    namespace

    namespace的作用就是关联对应的Mapper接口方法,特别是在接口方法在不同接口中存在重名时,用来作为一个定向防冲突的作用。

    resultMap、resultType

    resultType:从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType 或 resultMap,但不能同时使用。他会直接定位到类的所有属性。

    resultMap:外部 resultMap 的命名引用。结果集的映射是 MyBatis 最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用 resultMap 或 resultType,但不能同时使用。我们可以把它当做成一个Map,key就是property,我类的变量,value就是column,数据库的字段。

    <mapper namespace="tk.mybatis.simple.mapper.UserMapper">
        <resultMap id="userMap" type="tk.mybatis.simple.model.SysUser">
            <id property="id" column="id"/>
            <result property="userName" column="user_name"/>
            <result property="userPassword" column="user_password"/>
            <result property="userEmail" column="user_email"/>
            <result property="userInfo" column="user_info"/>
            <result property="headImg" column="head_img" jdbcType="BLOB"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        </resultMap>
    
        <select id="selectById" resultMap="userMap">
            SELECT * FROM sys_user WHERE id = #{id}
        </select>
        <select id="selectAll" resultType="tk.mybatis.simple.model.SysUser">
            SELECT id,
            user_name ,
            user_password ,
            user_email ,
            user_info ,
            head_img ,
            create_time
            FROM sys_user
        </select>
    </mapper>

    如上面给出的代码所示,我一开始就给出了SysUser这个类的全限定名,并把它包装成了一个resulMap,在里面给出了变量和表中字段的key-value关系,然后下面的selectById就是用到了这个resultMap这个结构。第二个用到的就是resultType这种方式,由于我在mybatis-config.xml文件中定义了自动匹配驼峰命名变量的方法,所以我在表字段的后面不用再去声明类的变量名称。

    至于这两种方法的利弊呢?我们可以来做个比较

      优点 缺点
    resultType 比较直观 要写许多实体类
    resultMap 多个表关联的时候就比较方便了,不用再去写JOIN  
  • 相关阅读:
    poj 3070 矩阵快速乘
    将数字放大显示
    hdu 火车入队 stack
    linq to Entity 数据库除了有主键还有唯一索引,是不是不能更新
    整理:C#写ActiveX, 从代码到打包到签名到发布的示例
    Java—FileOperator
    第二章-递归与分治策略
    第四章-贪心算法
    第五章-回溯法
    Linux中C程序调试、makefile
  • 原文地址:https://www.cnblogs.com/Jolivan/p/9118640.html
Copyright © 2011-2022 走看看