Mybatis

Mybatis :

1配置
confing配置:
*UNPOOLED 不使用连接池的数据源 ,MyBatis会创建unpooledDataSource 实例
*POOLED 使用连接池的数据源,MyBatis会创建PooledDataSource 实例
*JNDI 使用JNDI实现的数据源 ,MyBatis会从JNDI服务上查找DataSource 实例,返回使用
*一般采用POOLED
<datasourc type=“POOLED”>数据源

<settings>
*为全局开关,value默认为false,开启true
<setting name:"LazyLoadingEnadled" value: />

*启用时对带有延迟属性对象加载,关闭,对每种属性都按需加载
*默认为true,使用时需要改成false
<setting name:"aggressiveLazyLoading" value: />
</settings>
mapper映射配置:
<mapper><mapper>映射器

 


2缓存
一级缓存
一个人在查询后,sql数据会保存起来,如果再操作,就无需再请求数据库,直接获取到信息。
(是同一个sqlSession专属)

二级缓存
*在confing文件加入
<settings>
*cacheEnabled 的取值默认就为 true,开启二级缓存
<setting name="cacheEnabled" value="true"/>
</settings>
*在映射文件开启二级缓存支持
<mapper>
<cache></cache>
<mapper>
*select标签中添加useCache属性,true开启.
*针对每次查询都需要最新的数据 sql,要设置成 useCache=false,禁用二级缓存。
<select>
一个人在查询后,sql数据会保存起来,提交事务之后,sql就可以共享给下一个有着同样操作的人使用。
(mapper级别的缓存,是多个sqlSession之间共享的操作)


一级缓存转换成二级缓存之间的细节问题(一级缓存默认开启,可以理解成自用,二级缓存可以理解成共享,当有相同
需求时就会调用共享当中的sql数据,),好处,节省了请求数据库的操作,提升效率,但是仅限于查询。
+++使用其他操作(删除,增加,修改)时会清空缓存,因为不删除,有可能会造成脏读的错误

3延迟加载
可以理解成单例模式中的懒汉模式,意思差不多,都是需要的时候才创建出来或者加载
没啥特别滴。


4映射对象关系

解决了数据库的字段和java代码字段不一致的问题,将查询结果集传给被映射的对象
resultMap映射对象关系非常的直观明了


5动态sql
因为在大量的sql语句中有着大量重复代码,降低开发的效率,动态sql理所应得解决了此问题
动态SQL可以接出需要的SQL,某种程度上已经达到了万能的作用,我愿称之为万能sql,非常的好用银杏。

6ongl表达式
是Object Graphic Navigation Language的缩写,意思就是对象的导航语言,顾名思义就是通过
对象的取值方法来获取数据,写法上去除了get,直接填写代码属性就可以(ktm.name);

posted @ 2021-04-13 15:53  爱德华纽盖特  阅读(95)  评论(0)    收藏  举报