随笔分类 - Mybatis
摘要:业务功能: 把一个表按照月份分为12个,命名user_01、user_02、....user_12。 Mapper.xml中只配置一个SQL: select * from user where age = #{age} 输入当前月份查询的时候,自动把逻辑表名改成对应的月份表。例如输入202005,此
阅读全文
摘要:插件编写要求(分页插件PageHelper) 自定义插件需要做到三点 1)实现Interceptor接口 public class PageInterceptor implements Interceptor{} 2)实现对应的方法。最关键的是intercept()方法里面是拦截的逻辑,需要增强的代
阅读全文
摘要:6、SimpleExecutor.doQuery() 1)创建StatementHandler 在 configuration.newStatementHandler()中,new一个newStatementHandler,先得到RoutingStatementHandler。 RoutingSta
阅读全文
摘要:四、执行SQL User user = mapper.selectUser(1); 由于Mapper都是JDK动态代理对象,所以任意的方法都是执行触发管理类MapperProxy的invoke()方法。 QA: 1.引入MapperProxy为了解决什么问题?硬编码和编译时检查问题。他需要做的事情是
阅读全文
摘要:三、获取Mapper对象 在老的版本中,DefaultSqlSession的selectOne()方法可以直接根据Mapper.xml中的StatementID,找到SQL执行。但是这种方法属于硬编码,不以查找和修改。 并且如果是参数传入错误,在编译阶段也是不会报错的,不利于提前发现问题。 User
阅读全文
摘要:程序每一次操作数据库,都需要创建一个会话,我们用openSession()方法来创建。 SqlSession session = sqlSessionFactory.openSession(); 这里的sqlSessionFactory用到的是默认实现类,在openSessionFromDataSo
阅读全文
摘要:一、配置解析过程 Mybatis配置解析的过程分为两种文件。一个是mybatis-config.xml全局文件。另外一个就是所有的Mapper.xml文件,也包含在Mapper接口类上的定义的注解。 如何解析的? SqlSessionFactory sqlSessionFactory = new S
阅读全文
摘要:缓存 缓存是一般ORM框架都有的功能,目的就是提高查询的效率和减少数据库的压力。 缓存结构 Mybatis源码中与缓存相关的类都在cache包中,其中有一个Cache接口,默认实现类PerpetualCache,他是由HashMap实现的,是基础缓存。 Mybatis的缓存功能是采用装饰器模式实现的
阅读全文