zoukankan      html  css  js  c++  java
  • SQL映射文件

    1.SQL映射文件(...Mapper.xml

      SQL映射文件的几个顶级元素(按照定义顺序)

        mapper-只有一个属性   namespace(命名空间)

          用于区分不同的mapper,全局唯一

          绑定dao接口,及面向接口编程

        cache-配置给定命名空间的缓存

        cache-ref-从其他命名空间应用缓存配置

        resultMap-用来描述数据库结果集和对象的对应关系

        sql-可用重用的SQL块,也可以被其他语句引用

        insert-映射插入语句

        update-映射更新语句

        delete-映射删除语句

        select-映射查询语句

    2.SQL映射文件的select的返回结果类型的映射可以使用resultMap和resultType,但不能同时使用。

      resultType 直接表示返回类型包括 基础数据类型 和 复杂数据类型。

      resultMap 则是对外部resultMap定义的引用,对外部resultMap的Id,表示返回结果映射到哪一个resultMap上

      它的应用场景一般是 数据库字段信息与对象属性不一致 或者需要做复杂的联合查询以便自由控制映射结果。

    3.关于MyBatis的SQL语句参数入参,对于基础数据类型的参数数据,使用@param注解实现参数入参;复杂数据类型的参数直接入参即可。

    4.resultMap的association 和 collection 可以实现高级结果映射。

    association属性有:

    • javaType:完整Java类名或者别名。若映射到一个JavaBean,则MyBatis通常会自行检测到其类型;

       若映射到一个HashMap,则应该明确指定JavaType,来确保所需行为。

    • property:映射数据库列的实体对象的属性。

    association的子元素有:

    • id
    • result

        property:映射数据库列的实体对象的属性。

        column:数据库列名或别名

    collection的属性有:

    • ofType:完整Java类名或者别名,及集合所包含的类型。
    • property:映射数据库列的实体对象的属性。  

    5.MyBatis缓存

    • 一级缓存:是基于PerpetualCache(MyBatis自带)的HashMap本地缓存,作用范围为session域内,但session flush 或者 close 之后,该session中所有的cache就会被清空。
    • 二级缓存:就是global caching,它超出session 范围之外,可以被所有SqlSession 共享,开启它只需要在MyBatis的核心配置文件(mybatis-config.xml)settings中设置即可
    • 一级缓存缓存的是SQL语句,二级缓存缓存的是结果对象。
  • 相关阅读:
    向Oracle 数据表中插入一条带有日期类型的数据
    JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库
    球球大作战四亿人都在玩?玩家回归没有优越感,新玩家游戏被虐,游戏体验感极差!
    struts2中的错误--java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
    如何在idea中设置 jsp 内容修改以后,立即生效而不用重新启动服务?
    idea中 在接口中如何直接跳转到该接口的是实现类中?
    使用IDEA 创建Servlet 的时候,找不到javax.servlet
    如何高效的遍历HashMap 以及对key 进行排序
    springboot 自动装配
    git 多账户添加ssh秘钥
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7617704.html
Copyright © 2011-2022 走看看