mybatis
2020-12-30 11:21:02 3 举报
AI智能生成
Mybatis框架完整笔记版
作者其他创作
大纲/内容
mybatis
核心配置文件
settings
缓存设置
日志工具
typeAliases
为具体的类指定别名
为包下所有的类指定别名
plugins
pageHelper分页插件
enviroments
默认使用的环境
事务管理器
连接池
数据源参数
mappers
resource 相对路径
url 绝对路径
class 接口全路径
package 接口包名
映射文件
namespace
1.namespace + 指令ID 会当做Map中key,namespace也是指令区分的一种方式
2.namespace是接口的全路径,汇集那个namespace当做接口全路径进行注册,生成代理类
resuliMap
id 属性
主键标识,作用和result一样
type 属性
具体映射成那个类
extends 属性
继承一个resultMap
result 标签
column
查询结果的列的标签名
property
type 这个类中属性名
jdbcType
可省略 数据库中类型 mybatis 可以自动检查
javaType
可省略 属性类型 mybatis 自动检查
typeHandler
可缺省 mybatis 内置有
id 标签
result 本质上相同
sql
sql片段,将公共得sql抽离出来
id sql片段得唯一标识
使用include refid
select
id
指令ID 唯一标识
resultType
返回结果得对应实体类,可以全路径也可以是类别名
resultMap
已经配置得结果映射关系得Id
parameterType
可缺省,参数类型
insert
指令的唯一标识
useGeneratedKeys
使用生成主键
keyColumn
主键列
keyProperty
主键对应得类属性
$ 和 #
$和#都能获取参数值
$:静态sql,参数是字符串拼接
#:动态sql,参数会进行预处理
区别
$存在sql注入得风险,#在一定程度上规避了这个问题
但是在参数是特殊关键字,列名,表明,函数名等特殊关键字时,不能进行转义,只能使用$
面试:既然两种方式都一样为什么还要保留 $
那么就要研究#这个符号到底是怎么处理的。
动态SQL
if标签
foreach标签
collection
带循环得元素
item
指代循环时具体得元素
open
开始循环得前缀
close
结束循环得后缀
separator
每单次循环结束都得分隔符
index
循环得索引
choose标签
when
具体得判断条件
otherwise
where标签
where取代where关键字,并且可以去掉最前面第一个add
set标签
set取代set关键字,去掉最后一个逗号
trim标签
prefix
默认添加得前缀
prefixOverrides
去掉指定前缀
suffix
默认添加得后缀
suffixOverrides
去掉得后缀
@param
mybatis 中默认只支持对象类型得参数,如果是多个简单参数则使用数组得格式获取值,为了便于获取值,使用@param注解,为参数设置别名
联合查询
一对一
多对一
association
处理方式
1.二次查询
将查询的结果当做第二次查询的参数,然后将第二次查询的参数封装为结果
2.子主题
使用关联查询
一次性将查询出结果,然后将查询结果封装为数据
自由主题
ORM
ORM概念
O
Object
R
Relation
M
Mapper
对象关系映射
将数据库得数据与java数据模型关联映射
表对应类
列对应类中属性字段
ORM框架
Hibernate
可以通过对实体类进行操作,从而操作数据库 HQL语句
Mybatis
ibatis
半封装的ORM框架
需要书写sql语句
Spring Data JPA
0 条评论
回复 删除
下一页