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

    SQL映射文件的常用元素

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

    mapper      -namespace

      --namespace(命名空间)

      --绑定Dao接口

      --namespace的命名必须跟某个接口同名

      --接口中的方法与映射文件中的语句id一一对应

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

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

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

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

      insert         -映射插入语句

      id:命名空间中唯一的标识符

      parameterType:传入sql语句的参数类型的完全限定名或别名

      提供开启了事务控制,一定要进行conmit提交事务.

    update              -映射更新语句

      id:命名空间中唯一的标识符

      parameterType:传入sql语句的参数类型的完全限定名或别名

      提供开启了事务控制,一定要进行conmit提交事务.

      如果只是更新单个值,每次都传入对象影响速度,可以传两个参数

      但是参数必须使用注解 @Param

      映射SQL中的参数:#{注解名称}

    超过4个以上的参数最好使用封装成对象入参

      参数固定的业务方法,最好直接使用多参数入参.

    delete        -映射删除语句

      id:命名空间中唯一的标识符

      parameterType:传入sql语句的参数类型的完全限定名或别名

      提供开启了事务控制,一定要进行conmit提交事务.

    select         -映射查询语句

      -select属性详细配置

      -id

      命名空间中唯一的标识符

      接口中的方法与映射文件中的sql语句id一一对应

      -parameterType

        传入sql语句的参数类型的完全限定名或别名

        基础数据类型

          -int String Date等

          -只能传入一个,通过#{参数名}即可获取传入的值

        复杂数据类型

          -Java实体类,Map等

          -通过#{属性名}或者#{Map的key}即可获取传入的值

      -resultType

        sql语句返回值类型的完整类名或别名

        返回基本数据类型

        复杂数据类型(对象等)

      -resultMap:对外部redultMap的引用

        设置resultMap为返回值:

        在mapper文件里面创建resultMap标签, 设置type为返回值类型,设置id的值跟查询表设置的值相同

      格式:

        <resultMap type="User" id="userList">

              <result property="类属性名" column="数据库查询的属性名"/>  

        </resultMap>

      应用场景:

        数据库字段信息与对象属性不一致

        负责的联合查询,自由控制映射效果

        连表查询:参考内连接查询

      自动映射:

        自动映射的前提:字段名与属性名一致

        自动映射级别:PARTIAI(默认),自动匹配所有属性

    resultMap实现高级结果映射

      

        

      语法:

        <association property=”实体类对面名”  javaType=”对象所对应的类名或别名” 或引用外部resultMap>

          <id  property=”实体类的属性”  column=”数据库列名或别名” />

          <result property=”...”  column=”...” />

          <result property=”...”  column=”...” />

          ......

        </association>

      

      语法:

        <collection property=”集合类对面名”  ofType=”对象所对应的类名或别名” 或引用外部resultMap>

          <id  property=”实体类的属性”  column=”数据库列名或别名” />

          <result property=”...”  column=”...” />

          <result property=”...”  column=”...” />

          ......

        </collection>

        提高association/collection的可重用性,则提取成一个resultMap标签对象出来即可.

    reslultMap自动映射(autoMappingBehavior)三个级别 

      如果存在内部嵌套(association/collection),那么就不会自动映射所有字段,如果存在内部嵌套要实现自动映射所有字段,那么必须根据条件设计全局属性: 

      <settings>

        <!-- 禁止自动匹配 -->

        <setting  name=”autoMappingBehavior” value=”NONE”/>

        <!-- 自动匹配所有属性 内部嵌套除外 -->

        <setting  name=”autoMappingBehavior” value=”PARTIAL”/>(默认)

        <!-- 自动匹配所有属性 -->

        <setting  name=”autoMappingBehavior” value=”FULL”/>

      </settings>

    MyBatis缓存-性能较低(常用第三方缓存)

      一级缓存:基于MyBatis自带的HashMap本地缓存,作用范围为session域内,当session flush或者close之后,该session中所有的cache都会被清空.

      二级缓存(全局缓存):超出session范围之外,可以被所有SqlSession共享,开启它只需要在MyBatis的核心配置文件中设置即可,     

        二级缓存配置:

         1.MyBatis的全局cache配置

            <settings>

              <!-- 设置全局缓存 -->

              <setting  name=”cacheEnabled” value=”true”/>

            </settings>

         2.在mapper文件中设置缓存,默认情况下是没有开启缓存的,二级缓存的作用域只针对mapper的namespace而言,即,只有在此namespace下的查询才能共享cache,

        mapper内配置信息

            <cache eviction=”FIFO” flushInyerval=”60000” size=”512” readOnly=”true” />

        3.在查询语句标签内添加属性

          <select useCache=”true”>

          </select>

      总结:MyBatis对于缓存并不是擅长的,它只专心做的是SQL映射,所以采用OSCache,Merncachaed,Redis,Ehcache等专门的缓存服务器来做更合理

    .  

  • 相关阅读:
    hdoj 2041 超级楼梯
    hdoj 刚入门~把11页A了一些~~
    编写Powerdesigner脚本,快速生成数据库表
    网站
    duwamish
    面试题
    http://www.sqlclub.com
    Microsoft PetShop 3.0 设计与实现数据访问层
    Java代码查询站点
    从Blog上面去掉那该死的“狗狗订阅”的logo !
  • 原文地址:https://www.cnblogs.com/it-xiaoBai/p/10815271.html
Copyright © 2011-2022 走看看