Mybatis知识点
2021-06-07 09:30:48 0 举报
AI智能生成
Mybatis知识点
作者其他创作
大纲/内容
简介
Mybatis也是ORM框架的一种
使用Mybatis的主要原因是Mybatis比Hibernate的灵活性更高
处理复杂的业务的时候会更加方便
映射文件
Statement的实际位置就等于namespace+StatementId
占位符:
#{}解析传递进来的参数数据
更多脑图和最新原创技术文章可关注公众号:Java3y
${}对传递进来的参数原样拼接在SQL中
主键返回
mysql通过LAST_INSERT_ID()实现
oracle通过序列来实现
resultMap
resultMap我们用来告诉Mybaits如何将返回的查询结果进行封装
如果列名和属性名是完全一致的话,那么我们是可以省略的。但是一般来说都是不一样的,所以往往还是需要resultMap
在resultMap内部还可以使用两个节点标签
association:将关联查询信息映射到一个pojo类中。
collection:将关联查询信息映射到一个list集合中。
如果在集合中还有对象的关系要体现出来的话,那我们只能使用ofType。
如果集合中都是对象本身基本属性了,那么可以使用resultMap
resultType
如果是一个简单的对象(没有引用类型)或者返回简单类型数据,我们就可以直接使用resultType来用了
总的来说,resultMap是用得非常多的一个节点
映射关系
一对一
一对多
多对多
其实我们编好了SQL语句,看看在实际中是否需要拿到关联关系的数据如果需要就配置resultMap-->通过association和collection如果不需要直接返回我们原生的resultMap就行了
Mapper代理
需要实现的规范:
mapper.xml中namespace指定为mapper接口的全限定名
此步骤目的:通过mapper.xml和mapper.java进行关联。
mapper.xml中statement的id就是mapper.java中方法名
mapper.xml中statement的parameterType和mapper.java中方法输入参数类型一致
mapper.xml中statement的resultType和mapper.java中方法返回值类型一致.
Mapper代理返回值问题
如果是返回的单个对象,返回值类型是pojo类型,生成的代理对象内部通过selectOne获取记录
如果返回值类型是集合对象,生成的代理对象内部通过selectList获取记录。
快速入门
主配置文件
配置数据库信息
加载映射文件
映射文件
描述具体方法对应的SQL语句
工作流程
通过Reader对象读取Mybatis映射文件通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象获取当前线程的SQLSession事务默认开启通过SQLSession读取映射文件中的操作编号,从而读取SQL语句提交事务关闭资源
更多脑图和最新原创技术文章可关注公众号:Java3y
Mybatis的SQL语句是需要手写的,在程序中通过映射文件的命名空间.sql语句的id来进行调用!
动态SQL
Mybatis支持一些判断标签,于是我们就可以通过这些标签来完成动态CRUD的操作了
主配置文件
自定义别名,在映射文件中我们就可以使用别名了
加载映射文件
设置延迟加载
配置数据库的信息
缓存
一级缓存
Mybatis默认是开启一级缓存的
一级缓存是基于sqlSession的缓存
实现原理就是:通过一个Map来实现同一个sqlsession再次发出相同的sql,就从缓存中取不走数据库。如果两次中间出现commit操作(修改、添加、删除),本sqlsession中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。
与Spring整合之后,使用的是Mappper代理对应,一级缓存是失效的~
同一线程里面两次查询同一数据所使用的sqlsession是不相同的
二级缓存
Mybaits的二级缓存是需要自己在配置文件中配置的
二级缓存是基于Mapper(同一个命名空间)的缓存
查询结果映射的pojo需要实现 java.io.serializable接口
禁用二级缓存
useCache="false"
刷新缓存
执行增删改操作默认是会刷新缓存的,但我们也可以配置不刷新(不建议使用)
flushCache="false"
Mybatis和Ehcache框架整合
优点和缺点
优点:对于访问多的查询请求且用户对查询结果实时性要求不高,此时可采用mybatis二级缓存技术降低数据库访问量,提高访问速度
缺点:因为mybaits的二级缓存区域以mapper为单位划分,当一个商品信息变化会将所有商品信息的缓存数据全部清空
逆向工程
在pom中添加插件
编写自动生成的配置文件
如果出错了,注意版本的问题
0 条评论
下一页
为你推荐
查看更多