栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis学习笔记

MyBatis:
1.xml配置文件(全局配置文件)
2.sql映射文件;配置了每一个sql,以及sql的封装规则等
3.将sql映射文件注册在全局配置文件中
4.代码:-根据全局配置文件得到SqlSessionFactory
		-使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
			一个sqlSession就是代表和数据库的一次会话,用完关闭
		-使用sql的唯一标识来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的
接口式编程(推荐):
	原生:Dao - DaoImpl
	mybatis:Mapper - xxMapper.xml
sqlSession代表和数据库的一次会话,用完必须关闭
sqlSession和connection一样都是非线程安全的,每次使用都应该去获取新的对象
mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象
两个重要的配置文件:mybatis的全局配置文件
	sql映射文件:保存了每一个sql语句的映射信息
全局配置文件:Configuration
properties标签:引入外部的properties配置文件的内容
	resource:引入类路径下的资源
	url:引入网络路径或者磁盘路径下的资源
settings标签:包含重要的设置项
	setting:用来设置每一个设置项
		name:设置项名
		value:设置项取值
typeAliases标签:别名处理器,可以为java类型起别名,别名不区分大小写
	typeAlias:为某个java类型起别名
		type:指定要起别名的类型的全类名,默认别名就是类名小写
		alias:指定新的别名
	package:为某个包下的所有类批量起别名
		name:指定报名-起默认别名
typeHandlers标签:类型处理
environments标签:myBatis可以配置多种环境,default指定使用某种环境,达到快速切换
	environment 配置一个具体环境信息,必须有两个标签,id代表当前环境的唯一标识
		transactionManager:事务管理器
			type:JDBC、MANAGED(别名),自定义实现接口TransactionFactory
		dataSource:数据源
			type:类型;UNPOOLED、POOLED、JNDI
databaseIdProvider标签:支持多数据库厂商
	type="DB_VENDOR"  得到数据库厂商标识
mappers标签:将sql映射注册到全局配置中
	mapper 注册一个sql映射
		resource:注册类路径下的sql映射文件
		url:引用网络路径或者磁盘路径下的sql映射文件
		class:引用(注册)接口
			1.有sql映射文件,文件名与接口同名,并放在同一目录下
			2.没有sql映射文件,所有sql都是利用注解写在接口上
			推荐重要的接口写sql映射文件,
	批量注册 package name="..."
映射文件:

标签:select、update、insert
myBatis允许增删改直接定义以下类型返回值:Integer、Long、Boolean
	需要手动提交数据
parameterType:参数类型,可以省略
useGenneratedKeys="true":使用自增主键的值
keyPropertiy:指定对应的主键属性,也就是mybatis获取到主键值后,将这个值封装给
	javaBean的哪个属性
-Oracle不支持自增,使用序列来模拟自增
	selectKey标签
	使用order{AFTER、BEFORE}来主键取自序列
参数处理:
	单个参数:mybatis不做特殊处理
		#{参数名}:取出参数值
	多个参数:多个参数会被封装成一个map
		key:param1...paramN
		#{}就是从map中获取指定的key值
	命名参数:明确指定封装参数式map的key;@Param注解
		key:使用@Param注解指定的值
		#{指定的key}取出对应参数值
	POJO:多个参数正好式业务逻辑的数据模型
		#{属性名}:取出传入的pojo属性值
	Map:#{key},取出map中对应的值
	TO:(Transfer Object)数据传输对象
		Page{
			...
		}
	参数值的获取:
		#{}、${}:可以获取map中的值或者pojo对象属性的值
		区别:#{}:是以预编译的形式,将参数设置到sql语句中,PreparedStatement,
			防止sql注入
			${}:取出的值直接拼装在sql预计中,有安全问题
		#{}:更丰富用法:规定一些规则
			javaType、jdbcType、mode....
resultMap:和resultType只能用一个
	resultMap标签:自定义某个javaBean的封装规则
		type:自定义规则的java类型
		id:唯一id方便引用
			id标签:定义普通列封装规则
				column:指定哪一列
				propertiy:指定对应的javaBean属性
			result标签:不指定的列会自动封装,写resultMap九八全部映射规则都写
				column:指定哪一列
				propertiy:指定对应的javaBean属性
			association标签:指定联合的javaBean对象
				关联对象:
				property:指定哪个属性是联合的对象
				javaType:指定这个属性对象的类型
				-----------------------------------
				分布查询:
				select:表明当前的属性是调用select指定的方法查出的结果
				column:指定将哪一列的值传给这个方法
	延时加载-----配置文件中配置
	collection定义关联集合类型的属性的封装规则(嵌套结果集)
		ofType指定集合里面元素的类型
		fetchType=""  lazy:延时加载eager:立即
	discriminator标签:鉴别器
动态sql:DynamicSQL
	if标签:
		test:判断表达式(OGNL) 特殊符号要转移字符
		where标签:只会去掉第一个多出来的and或者or
	trim标签:prefix、prefixOverrides、suffix、suffixOverrides
	choose标签:(when、otherwise)分支查询,类似swtich
		
	set标签:更新
	foreach标签:
		collection:指定要遍历的集合
		item:将当前遍历出的元素赋值给指定的变量
		separator:每个元素之间的分隔符
		open:遍历出所有结果拼接一个开始的字符
		close:遍历出所有结果拼接一个结束的字符
		index:索引
	mybatis默认还有两个内置参数:
		_parameter:代表整个参数
		_databaseId:配置了databaseIdProvider标签,就是当前数据库别名
	bind标签:可以将OGNL表达式的值绑定到一个变量中 name、value
	sql标签:抽取可重用的sql片段
		include标签:引用外部定义的sql,还可以自定义property,
			sql标签内部就能使用自定义的属性,${}来取值
MyBatis缓存机制:
mybatis默认定义了两级缓存、
一级缓存(本地缓存):与数据库同一次会话期间查询的到的数据会放到本地缓存
	sqlSession级别的缓存,是一直开启的、clearCache()清除缓存方法
二级缓存(全局缓存):基于namespace级别的缓存,一个namespace对应一个二级缓存
	1.配置文件中开启缓存:cacheEnabled="true"
	2.映射文件加
		eviction:缓存的回收策略
		flushInterval:缓存刷新间隔
		readOnly:是否只读
		size:缓存存放多少元素
	3.pojo实现序列化接口
查询的数据都会被默认放在一级缓存中,只有会话提交或者关闭后,一级缓存中的数据才会转移到
二级缓存中
*没有在映射文件中加标签的,不可以使用二级缓存
*select标签中 useCache="true";false(一级缓存依然使用,二级缓存不使用)
*增删改标签的:flushCache="true";一级和二级缓存全部清空
	查询标签的默认flushCache="false"
*sqlSession.clearCache();只是清楚当前session的一级缓存
*localCacheScope
ehcache:导入jar包(第三方缓存包、第三方缓存整合适配包)
	ehcache.xml配置文件
	
	
MyBatis-Spring整合:
目的:1.spring管理所有组件,mapper的实现类
			service -》Dao  @Aurowired 自动注入mapper
	2.spring事务管理
MyBatis逆向工程:
MyBatis Generator:MBG,代码生成器
MyBatis工作原理:
1.获取到sqlSessionFactory对象
	把配置文件的信息解析并保存在Configuration对象中,返回包含了Configuration的
	DefaultSqlSession对象
	*MappedStatement:代表一个增删改查的详细信息
2.获取到sqlSession对象
	返回一个DefaultSqlSession对象,包含Executor和Configuration
	这一步会创建Executor对象
3.获取接口的代理对象(MapperProxy)
	getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象
	代理对象里面包含了 DefaultSqlSession(Executor)
4.执行增删改查方法
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号