J2EE/mybaties
文章平均质量分 90
worn.xiao
这个作者很懒,什么都没留下…
展开
-
mybatis-spring之一级缓存失效问题
一.前言spring结合mybatis后mybaits一级缓存失效分为两种情况:如果没有开启事务,每一次sql都是用的新的SqlSession,这时mybatis的一级缓存是失效的。如果有事务,同一个事务中相同的查询使用的相同的SqlSessioon,此时一级缓存是生效的。判断是否是同一个SqlSession 可以把日志级别降到debug级别查看相应的SqlSessionId是否为多个二.一级缓存介绍Mybatis提供了一级缓存的方案来优化在数据库会话间重复查询的问题。实现的方式是每转载 2022-02-04 22:30:58 · 2998 阅读 · 0 评论 -
【Mybatis源码解析】动态SQL工作原理解析
一mybatis动态SQL1.1 什么是动态SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中。动态 SQL 元素和...原创 2022-01-24 00:22:40 · 2178 阅读 · 0 评论 -
【Mybatis源码解析】 事务工作原理解析
一事务的使用private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { Transaction tx = null; try { final Environment environment = configuration.getEnvironment(); final Transacti.原创 2022-01-19 17:23:55 · 287 阅读 · 0 评论 -
【mybatis源码阅读】Spring与mybatis的整合原理
一 问题背景1 mybatis configuration何时加载问题2 mybatis mapper文件何时加载,创建mapper代理3 mybatis 插件注册问题4 mybatis 事务委托管理问题5 mybatis sqlsession的线程安全如何保证如上面所示提出了4个问题,就是我们spring整合mybatis的时候我们主要需要做的核心问题。那么我们来分析一下Spring和mybaits集成的源码。二 spring整合mybatis2.1 使用(1...原创 2020-08-24 00:38:29 · 799 阅读 · 0 评论 -
【Mybatis源码解析】mybatis中的设计模式
涉及涉及模式:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;单例模式,例如ErrorContext和LogFa...原创 2020-02-24 00:07:03 · 1047 阅读 · 0 评论 -
【Mybatis源码解析】数据源与设计原理
1 首先先看一下数据源的配置spring: datasource: test1: jdbc-url: jdbc:mysql://localhost:3306/alice_test?serverTimezone=CTT&useUnicode=true&characterEncoding=utf8 driverClassName: co...原创 2020-02-23 16:39:35 · 292 阅读 · 0 评论 -
【mybatis源码阅读】插件与插件原理
1首先看一下插件组装的代码如上图所示就是插件介入的地方。那么我们来看看interceptorChain是什么。protected final InterceptorChain interceptorChain = new InterceptorChain();如上所示interceptorChain是一个拦截器链表。如图我们看一下这个pluginAll的方法。传入了目...原创 2020-02-19 23:56:11 · 303 阅读 · 0 评论 -
【Mybatis源码阅读】mapper的执行原理
Mybaties执行流程之注解。好了Mybaties具体的执行流程是怎么样的呢。我们先从一个例子开始点getMapper点进去看你会发现实际上是从configuration中获取一个mapper的对象出来。具体mapper怎么注册到configuration中的,请自行查看我前面关于configuration中的文章。再往下走就是mapperRegistry,这个...原创 2020-02-18 23:56:14 · 798 阅读 · 0 评论 -
【Mybatis源码阅读】sqlSession的执行流程
首先看一个例子,看一下怎么把数据写入数据库这个是最常见的执行方式,好的。接下来我们可以看一下是如何执行的。可以看到SqlSession刚好包装了所有的执行方法,那么这些个方法是如何一步步的执行的呢。首先看一下参数statement是什么,其实如果看过我上一篇对Maybaties的初始化的文章的同学就知道了,其实这个statement就是Mapperstatment的i...原创 2020-02-17 22:38:21 · 549 阅读 · 2 评论 -
【Mybatis源码阅读】初始化过程
Mybatise初始化过程第一步 先看一个初始化代码如上图所示是构建SqlSessionFactory的全过程,那么具体是怎么执行的呢,首先我们大致可以看出代码中的意思无非就是读取配置文件生成SqlSessionFactory工厂,这里先给出一个比较全的配置文件格式代码。<?xml version="1.0" encoding="UTF-8" ?><!DOC...原创 2020-02-09 14:44:17 · 302 阅读 · 0 评论 -
mybaties调用存储过程与存储函数
一.调用存储过程 1.首先在数据库中定义存储过程,定义的存储过程的代码如下: //定义存储过程create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin p3:=p1+p2; end;//定义函数create or replace...转载 2018-04-01 12:27:26 · 420 阅读 · 0 评论 -
mybatis的三种参数传递映射方式总结
mybaties有三中参数映射的方式第一种:単个参数的映射方式第二种:多个参数但又不是很多的时候的参数映射方式第三种:参数比较多的时候public interface UserMapper { //mappper映射之単个参数 User findUserById(long id); //mapper多参数传参 User findUserBysome(@Param(原创 2017-03-18 19:27:53 · 4189 阅读 · 0 评论 -
【mybatis源码阅读】缓存与缓存原理
一 Mybaties查询缓存mybatis提供查询缓存,如果缓存中有数据就不用从数据库中获取,用于减轻数据压力,提高系统性能。Mybaties缓存模型一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响原创 2017-12-24 22:06:25 · 519 阅读 · 0 评论 -
mybaties之关联查询与延迟加载
一Mybaties关联查询与缓存基本数据模型:如上所示是我们电商系统的基本数据模型1.1 一对一映射模拟一个订单只能属于一个用户的,一对一映射。SELECT orders.`id`, orders.`user_id`, orders.`number`, user.`username`, user.`sex`FROM orders, USERWHERE原创 2017-12-24 21:04:22 · 524 阅读 · 0 评论 -
mybaties输入参数,结果类型,动态sql整理
一Mybaties之输入映射parameterType:可以是别名或者全限定名,他接受简单类型pojo,hashmap。1.1 简单类型。select id="findUserById" parameterType="int"resultType="User"> SELECT * FROM USER WHERE id =#{id} 1.2原创 2017-12-24 19:13:58 · 855 阅读 · 0 评论 -
mybaties基础篇
一什么是Mybatis:Mybatis是一个优秀的持久层框架。它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身。而不需要花费精力去注册驱动,创建连接connetion,创建statement,手动设置参数,结果集检索jdbc复杂的过程代码等复杂的过程代码。Mybatis通过xml或注解的statement,Preparestatement,CallableStateme...原创 2017-12-24 13:08:07 · 2323 阅读 · 0 评论