
mybatis
houjinimei
这个作者很懒,什么都没留下…
展开
-
Mybatis 源码解析 -插件模块
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:// MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClos原创 2017-07-10 12:46:09 · 278 阅读 · 0 评论 -
Mybatis -处理clob类型数据
当执行sql语句,返回的是map类型时, 比如 public List<Map<String, Object>> query(@Param("sql") String sql)得到的数据是List<Map>类型数据,此时,如果有返回的有clob字段时,数据是这样的oracle.sql.CLOB@63636de0 ,显然,这不是我想要的,我需要的是字符串数据 那么怎么来处理clob字段呢,很简单原创 2017-08-02 22:08:23 · 4637 阅读 · 1 评论 -
Mybatis 源码解析 -事务模块
事务对数据库的重要性,就不用多说了 我们先来看下mybatis中事务的隔离级别public enum TransactionIsolationLevel {//无 NONE(Connection.TRANSACTION_NONE), // (读已提交):可避免脏读的发生READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED), // (原创 2017-07-08 17:05:14 · 345 阅读 · 0 评论 -
Mybatis源码分析-二级缓存
二级缓存和一级缓存不一样的地方在于,二级缓存针对的是MapperStament,比一级缓存更细! 首先在使用一级缓存之前,mapper.xml文件中要配置标签来开启二级缓存,而且可以细化到mapper.xml中的每条sql语句,比如<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>原创 2017-07-07 13:12:15 · 371 阅读 · 0 评论 -
Mybatis源码分析-一级缓存
为了能提高系统性能,缓存必不可少,mybatis同样也是有缓存的! 分一级缓存和二级缓存,该篇介绍下一级缓存!! 我们回顾下配置阶段,再创建executor执行器时,有个Configuration.newExecutor方法,来看下public Executor newExecutor(Transaction transaction, ExecutorType executorType) {原创 2017-07-06 22:51:18 · 196 阅读 · 0 评论 -
Mybatis -typeHandlers类处理器
在配置模块中的parseConfiguration方法中//解析配置文件中的typeHandlers 节点内容,这里就是解析自定义的类处理器 typeHandlerElement(root.evalNode("typeHandlers")); //解析方法 private void typeHandlerElement(XNode parent) throws Exception {原创 2017-07-16 18:27:14 · 375 阅读 · 0 评论 -
Mybatis源码分析-执行模块
执行模块打算分几篇记录,先来了解下整个执行流程接下来将逐步分析以下几个模块,一个个来吧!! 1 连接池 2 事务 3 缓存 4 插件原创 2017-07-03 22:09:17 · 227 阅读 · 0 评论 -
Mybatis 源码解析 -插件模块-分页例子
分页查询是我们非常常用的一种查询方式,所以我们这里就以分页作为例子讲解! 对于mybatis来说,当然你可以直接写一个分页sql语句进行查询,将currentPage和pageSize作为参数传入,就可以获得分页数据了!但是呢,分页查询往往伴随的还需要获取”总条数” totalRecord,也就是说,还要对应的再写一条获取总条数的sql语句,再获取一次!比较麻烦,那么问题来了,能不能不那么麻烦,自原创 2017-07-15 11:27:16 · 278 阅读 · 0 评论 -
Mybatis源码分析-数据源
先来看个图 没错,datasource(数据源)包下面的源码,看起来好像不多的样子,就那么几个类而已!! 其实从包名就可以看出 数据源分三种jndi,pooled,unpooled,来看看他们的关系,咱看图说话1 unpooled 我们来看下unpooled即不使用数据连接池,每次都重新生成连接,执行完成关闭。 private Connection doGetConnection(Pr原创 2017-07-04 22:13:12 · 334 阅读 · 0 评论 -
Mybatis源码分析-配置模块
**Mybatis源码分析**原创 2017-07-02 11:29:09 · 396 阅读 · 0 评论 -
mybatis-sqlite
最近需要和移动端配置配合,将后台的结果数据生成sqlite数据库传给移动端(因为需要离线查看),所以配置信息的话需要同步存入sqlite。 1 创建和后台一样的表结构 2 做一个拦截器,只需要拦截StatementHandle 就可以了,仅处理增、删、改操作,对于sqlite来说 ,批量插入时 ,需要去掉 from dual(我使用的是oracle),所以插入的时候 还要去掉from dual原创 2017-07-27 15:25:49 · 1316 阅读 · 0 评论