Mybaties第三天

Posted sunners

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybaties第三天相关的知识,希望对你有一定的参考价值。

1. Mybaties运行原理

 

      技术图片

2.关联查询

   一对一  

      直接写 完整的SQL语句,在ResultMap中把所有的属性写出来。

      直接写 完整的SQL语句,在ResultMap中写出一个表中的字段属性,在同一个ResultMap中的association 标签中写出另一个表的字段属性,association 中的javaType属性

    是从表的类型

      两个表的Mapper映射文件,各自写各自的查询SQL,各自写各自的在ResultMap,主表的Mapper映射文件的ResultMap中要写association ,里面不写属性字段,javaType

    属性写上,column是量表关联的字段,select=“执行另一个Mapper映射文件中的namespace 的属性值+查询语句的ID”

  一对多

    同一对一第一种方式一样

    两个表的Mapper映射文件,各自写各自的查询SQL,各自写各自的在ResultMap,主表的Mapper映射文件的ResultMap中要写collection,里面不写属性字段,ofType

    属性写上(从表类型,就是多的一方),column是量表关联的字段,select=“执行另一个Mapper映射文件中的namespace 的属性值+查询语句的ID”

3.懒加载

    需要的时候再去加载,不需要的时候就不加载,默认是关闭的,需要手动开启。只会在sql语句分开的时候才能用

    技术图片

4.动态SQL

    where :代替where关键字,会把多余的where 去掉

    if: <if test="t条件,支持java里的逻辑运算符与equales等方法"></if>   

    choose (when  otherwise):等同于 switch case 方法 。<choose> <when test="条件"></when>... <otherwise> 都不符合条件默认执行</otherwise></choose>

    tirm:<tirm prefix=" 执行完成后加前缀" suffix ="加后缀"  prefixoverrides="覆盖指定前缀" suffixoverrides=“覆盖指定后缀” ></tirm>

    set:代替set标签,配合if使用,去掉最后成立条件的逗号

    Formeach:遍历集合或者数组

      <foreach  collection="要遍历的对象(list或array) "  item="遍历到的当前对象"  separator="遍历对象 之间的分隔符"  open="遍历结束后加指定前缀"

        close="遍历结束后加指定后缀">

      <foreach>

5.整合ssm

 

 

    在原有整合的Spring+SpringMVC 的Spring上加上:

    技术图片

 

  ,并且添加一个技术图片jar包和 Mybaties的 全局配置文件(除了陪懒加载和缓存别的都不需要)。

 

  整合之后,Spring管理Service层,SpringMVC管理Controller,Mybaties管理Dao层

6.批量更新

  在用动态 sql进行 批量更新时,会报错,因为Mybaties不支持批量更新,需要在 配置的时候URL写上&allowMultiQueries=true。

以上是关于Mybaties第三天的主要内容,如果未能解决你的问题,请参考以下文章

mybaties简单测试

mybaties # , $

mybaties

mybaties数据源配置类型(POOLEDJNDIUNPOOLED)

Mybaties保存后自动获取主键ID

MyBaties源码解析