mybaties 链式编程以及mybatis处理 原理深入
连式编程教程
基本概念
上次写的一个博客丢失了 现在只能大致截一下图 不会太详细
DTD约束 (mapper映射xml+全局配置xml)
全局配置XML标签
propertis (导入外部配置文件)
stting 全局设置标签
设置项很多(缓存、驼峰命名、jdbctype等)
typeAliases java类别名
java全类名起一个别名
注意:默认别名大小写并不敏感
批量包取别名+类其单独别名
TypeHealder 类型处理器
数据库类型转化为 java类型的映射
默认的类型转化
plugins 插件
拦截四大组件的方法前后进行处理
enviroments 环境
配置多个环境默认开始其中一个 (连接池。连接信息 、事务处理 )
databaseldProviudr 多数据库支持
不同的数据库执行不同的sql方法 数据库起一个别名
mapper 映射资源配置
批量注册
mapper映射文件标签 (数据库需要支持自增主键比如:mysql)
自增主键设置
主键放入 返回值的id属性
序列主键设置(不支持自增主键 比如:orcle )
springboot进行mybaties测试
参数处理
多参数指定默认生成map的key
不同类型取参数值
原理
获取mapper对象(是一个代理对象)
调用(代理对象)方法
处理类为MapperProry
方法包装类的执行方法
参数转化方法
注意:parm是是parm1开始的
$和#(推荐) 区别
{}的更多用法
null值处理
所以可能传null可能出现无效的类型 因为数据库不支持这个类型
处理方式
第一种
第二种
特殊类型返回值处理
map的返回
单条记录封装map resultType=“map”
多条记录封装map resultType=“封装类型” + 注解是[id,,]属性封装为key
多条记录封装list resultType=“封装类型”
自定义返回值规则 resultMap
在关联查询(多表查询个含有对象关系封装)上的应用
第一种 级联属性封装成结构集
第二种 association定义关联对象 (可以使用延迟加载+分布查询)
第三种 collection定义集合对象 可以使用延迟加载+分布查询)
第四种 dicscriminator鉴别器 (根据某列的取值情况采用不同的封装规则)
分布查询
如果只是查但是没有用到的话 就不会去查详细信息 (用到的时候才会查 更详细的信息(子查询) )
设置 延迟加载 开启配置
具体列设置
区别 :一个是否开启懒加载 一个规定什么时候去懒加载