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。
原文地址:https://www.cnblogs.com/sunners/p/12104282.html