zoukankan      html  css  js  c++  java
  • mybatis 学习四 (上)resutlMap

    SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如:

    <mappers>  
        <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" />  
        <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" />  
        <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" />  
        <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" />  
    </mappers>  

    当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。

    SQL 映射XML 文件一些初级的元素:

    1. cache – 配置给定模式的缓存
    2. cache-ref – 从别的模式中引用一个缓存
    3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象
    4. sql – 一个可以被其他语句复用的SQL 块
    5. insert – 映射INSERT 语句
    6. update – 映射UPDATE 语句
    7. delete – 映射DELEETE 语句
    8. select  -  映射SELECT语句

     resultMap 是MyBatis 中最重要最强大的元素了。你可以让你比使用JDBC 调用结果集省掉90%的代码,也可以让你做许多JDBC 不支持的事。现实上,要写一个等同类似于交互的映射这样的复杂语句,可能要上千行的代码。ResultMaps 的目的,就是这样简单的语句而不需要多余的结果映射,更多复杂的语句,除了只要一些绝对必须的语句描述关系以外,再也不需要其它的。

    ResultMap

    resultMap属性:type为java实体类;id为此resultMap的标识。

    id、result是最简单的映射,id为主键映射;result其他基本数据库表字段到实体类属性的映射。

    javaType  一个完整的类名,或者是一个类型别名
    jdbcType 数据表支持的类型列表
    typeHandler 以覆写类型处理器
     
    <resultMap type="liming.student.manager.data.model.StudentEntity" id="studentResultMap">  
        <id  property="studentId"        column="STUDENT_ID" javaType="String" jdbcType="VARCHAR"/>  
        <result property="studentName"       column="STUDENT_NAME" javaType="String" jdbcType="VARCHAR"/>  
        <result property="studentSex"        column="STUDENT_SEX"  javaType="int" jdbcType="INTEGER"/>  
        <result property="studentBirthday"   column="STUDENT_BIRTHDAY"  javaType="Date" jdbcType="DATE"/>  
        <result property="studentPhoto"  column="STUDENT_PHOTO" javaType="byte[]" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />  
    </resultMap>  

    我们使用id、result时候,需要定义java实体类的属性映射到数据库表的字段上。这个时候是使用JavaBean实现的。当然我们也可以使用实体类的构造方法来实现值的映射,这个时候是通过构造方法参数的书写的顺序来进行赋值的。

      上面使用id、result实现的功能就可以改为:

    <resultMap type="StudentEntity" id="studentResultMap" >  
        <constructor>  
            <idArg javaType="String" column="STUDENT_ID"/>  
            <arg javaType="String" column="STUDENT_NAME"/>  
            <arg javaType="String" column="STUDENT_SEX"/>  
            <arg javaType="Date" column="STUDENT_BIRTHDAY"/>  
        </constructor>  
    </resultMap>  

         当然,我们需要定义StudentEntity实体类的构造方法:

    public StudentEntity(String studentID, String studentName, String studentSex, Date studentBirthday){  
        this.studentID = studentID;  
        this.studentName = studentName;  
        this.studentSex = studentSex;  
        this.studentBirthday = studentBirthday;  
    }  
  • 相关阅读:
    BOI 2002 双调路径
    BOI'98 DAY 2 TASK 1 CONFERENCE CALL Dijkstra/Dijkstra+priority_queue/SPFA
    USACO 2013 November Contest, Silver Problem 2. Crowded Cows 单调队列
    BOI 2003 Problem. Spaceship
    USACO 2006 November Contest Problem. Road Blocks SPFA
    CEOI 2004 Trial session Problem. Journey DFS
    USACO 2015 January Contest, Silver Problem 2. Cow Routing Dijkstra
    LG P1233 木棍加工 动态规划,Dilworth
    LG P1020 导弹拦截 Dilworth
    USACO 2007 February Contest, Silver Problem 3. Silver Cow Party SPFA
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7476385.html
Copyright © 2011-2022 走看看