MyBatis
文章平均质量分 86
MyBatis学习
君战
凡是过往,皆是序章
展开
-
关于MyBatis一级缓存、二级缓存那些事
前言什么是MyBatis的一级缓存、二级缓存呢,它们的作用又是什么呢?其实很简单,MYBatis的一级缓存和二级缓存的作用都是为了减少数据库查询,对于相同的DQL语句和相同的查询参数复用之前的查询结果。它们之间的区别在于缓存范围。一级缓存也称为本地缓存,其缓存范围是SqlSession级别,即使用同一个SqlSession进行相同条件的N次查询,实际只会查询数据库一次(注意,不能在这N次查询之间进行增删改,以及调用close方法,这会让缓存失效),默认开启;而二级缓存范围是全局的,也可以简单理解为接口级原创 2021-05-20 17:44:47 · 737 阅读 · 3 评论 -
使用MyBatis后,DAO层的方法还能重载吗?
接下来我们就编码测试下。1.首先定义一个Mapper:/** * @author: 君战 * @since: 2020-04-29 **/public interface OrgRealNameMapper { @Select("SELECT * FROM xxx WHERE id = #{id}") OrgRealNameDO selectByPrimaryKey(Integer id); @Select("SELECT * FROM xxx WHERE id原创 2021-05-15 09:34:43 · 2401 阅读 · 3 评论 -
MyBatis的四种资源加载方式以及优先级
什么是MyBatis资源加载?MyBatis资源加载指的就是如何加载我们定义好的映射文件(可能使用的是XML方式,也可能是注解方式),只有这样,MyBatis才能解析我们写的SQL以及将XML中的SQL和接口中的方法关联起来等等。其实所有的资源加载都差不多,Spring也有这样的资源加载机制,例如支持URL方式的资源加载、支持classpath方式的资源加载、支持文件方式的资源加载等等。MyBatis的资源加载方式有几种?我们可以首先查看MyBatis官方文档。在官方文档中给出了四种资源加载的方式:原创 2021-02-09 15:21:30 · 1066 阅读 · 0 评论 -
MyBatis数据库链接池源码分析
简介MyBatis默认提供了一个数据库链接池的实现-PooledDataSource,但是在企业级项目中几乎没有公司使用。今天我们就来分析下其源码实现,以及为什么不使用该链接池的原因。需要提前声明的是,在阅读源码前最好有一些J.U.C(java.util.concurrent)方面的基础知识源码分析从类关系中可以看出,PooledDataSource实现了Java定义的DataSource接口。我们都知道从数据源获取一个数据库链接是调用getConnection方法。因此,我们首先来分析下getCon原创 2021-01-22 12:46:53 · 386 阅读 · 1 评论 -
MyBatis中拦截器(Interceptor)实现原理分析
简介插件是用来改变或者扩展MyBaits原有的功能,MyBatis对外提供的扩展点共有四个,可以使用插件进行拦截的接口和方法如下:Executorupdate(updaye、query、flushStatement、commit、rollback、getTransaction、close、isClose)。StatementHandler(prepare、parameter、batch、update、query)。ParameterHandler(getParameterObject、set原创 2021-01-05 09:16:51 · 4396 阅读 · 0 评论