
MyBatis
文章平均质量分 84
MyBatis
码拉松
这个作者很懒,什么都没留下…
展开
-
源码分析MyBatis对数值(int、double)类型进行test判断的误区
MyBatis对int、double等数值类型进行test判断的误区原创 2021-12-09 09:15:00 · 2435 阅读 · 2 评论 -
MyBatis一对一、一对多、多对多查询方法演示
准备工作订单实体@Setter@Getter@ToStringpublic class OrderEntity { private String orderNumber; private int orderType; private int orderId; private OrderDetailEntity orderDetailEntity;}订单明细实体@Setter@Getter@ToStringpublic class OrderDe原创 2020-07-13 16:06:41 · 1666 阅读 · 2 评论 -
Mybatis高性能批量插入方法
当使用Mybatis大量插入时可以利用MySQL语句的特性使原来多次请求插入的语句变成一次请求,以此提高插入效率。一般的插入方式 //1000条数据,一条一条的插入 @Test public void testInsert() { SqlSession sqlSession = sqlSessionFactory.openSession(true); UserMapper userMapper = sqlSession.getMapper(UserMapp原创 2020-07-12 22:22:06 · 3536 阅读 · 0 评论 -
MyBatis初始化全流程解析
Mybatis是一款非常值得我们学习的优秀开源框架,并且源码相对其他框架来说比较通俗易懂,代码层级也不深,我认为将他作为入门级的源码学习框架非常合适,本文将通过分析MyBatis初始化流程让大家能够先理清大致的脉络。初始化流程最终需要我们拿到SqlSessionFactory对象,根据config文件生成SqlSessionFactory对象,从这个对象中获取SqlSession,然后查询数据。public interface SqlSessionFactory { SqlSession open原创 2020-06-30 19:33:26 · 2490 阅读 · 1 评论 -
利用mybatis插件功能实现慢sql监控
首先在mybatis全局配置文件中加入如下配置。<plugins> //自定义的插件类 <plugin interceptor="com.wyl.mybatis.Interceptors.ThresholdInterceptor"> //定义一个属性值用来配置慢sql的时间 <property name="slowSqlTime" value="10000"/> </plugin></plugins>自定义插件类,配置拦截的方原创 2020-06-11 15:55:22 · 5138 阅读 · 1 评论 -
Mybatis中用到的设计模式
Mybatis是一款非常值得我们学习的优秀的开源框架,本文将通过分析mybatis源码,看看到底用到了哪些设计模式,以及如何把这些高大上的设计模式优雅的运用到实际的项目中去的!建造者模式意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。何时使用:一些基本部件不会变原创 2020-06-09 20:22:55 · 2730 阅读 · 0 评论 -
Mybatis二级缓存源码分析
本文中有些内容与之前关于一级缓存分析的文章中,有部分内容相似,所以有些会直接跳过,建议可以先看看关于一级缓存分析的文章一级缓存源码分析二级缓存生命周期mybatis一级缓存生命周期是sqlSession级别,二级缓存生命周期是sqlSessionFactory级别,也就是整个应用级别的生命周期。如何开启二级缓存mybatis二级缓存与一级缓存不同,需要先在全局配置文件中配置,默认开启<setting name="cacheEnabled" value="true" />还需要在ma原创 2020-06-08 21:38:24 · 2631 阅读 · 0 评论 -
Mybatis一级缓存源码分析与效果演示
一级缓存生命周期在mybatis中一级缓存是默认开启的,无需添加任何配置属性,一级缓存的生命周期默认是SqlSession级别的,也就是一次数据库会话级别的存在,不同的会话不能共享一级缓存。一级缓存何时失效?因为生命周期是SqlSession级别的,自然SqlSession关闭缓存失效调用SqlSession.clearCache方法增删改操作会清空缓存mapper文件中的配置flushCache为false<select id="xxx" resultType="xxx" flus原创 2020-06-05 17:10:38 · 2568 阅读 · 0 评论 -
Mybatis插件原理与实战案例分享
本文主要会结合源码来分析mybatis插件的实现原理,然后再通过案例帮助我们更好的进行理解。首先看一下插件是如何被扫描到的要想在mybatis中使用插件,必须要先在配置文件进行配置,参考如下。<plugins> <plugin interceptor="com.mybatis.interceptors.SlowSqlInterceptor"> <property name="slowSqlTime" value="1"/> </plugin>&原创 2020-06-03 15:18:26 · 2658 阅读 · 0 评论 -
Mybatis自带连接池源码解析
Mybatis默认为我们提供了一套连接池实现。核心属性:poolMaximumActiveConnections连接池最大活跃连接数,默认为10个。poolMaximumIdleConnections连接池最大空闲连接数,默认为5个。poolMaximumCheckoutTime最大可回收时间,当活跃连接数达到上限时,如果此时有连接请求,则会检查当前活跃连接列表中最早的那个连接是否超过这个时间,默认为20s。poolTimeToWait连接数满了,也没有连接超时,当前连接等待这个时间后,再原创 2020-06-02 13:41:05 · 3320 阅读 · 0 评论 -
Mybatis源码分析高频面试题-如何实现直接调用接口方法的
先了解一下在mybatis原生方式中如何使用接口调用。//从sqlSession中获取对应的mapper,参数为Mapper的Class对象UserMapper mapper = sqlSession.getMapper(UserMapper.class);//然后就可以直接调用接口方法了User user = mapper.selectById(1);从使用方式可以看出,首先是调用sqlSession.getMapper(UserMapper.class)这个方法,并且需要传入Mapper的C原创 2020-06-01 15:46:18 · 3018 阅读 · 0 评论