
mybatis
文章平均质量分 56
Mutou_ren
这个作者很懒,什么都没留下…
展开
-
Spring是如何与Mybatis整合的?
Mybatis对外暴露的接口类是SqlSession,要创建SqlSession实现类就要使用SqlSessionFactory,因此在与Spring结合时,就需要将SqlSessionFactory交给Spring管理在创建SqlSessionFactory时需要使用SqlSessionFactoryBuilder,需要为其传入一份配置文件,包含了数据源、配置信息以及mapper文件的路径等信...原创 2020-02-07 22:20:46 · 437 阅读 · 0 评论 -
Mybatis源码解析——DateSource
工厂方法模式Mybatis提供了两个javax.sql.DateSource接口实现,为PooledDataSource和UnpooledDataSource,分别使用PooledDataSourceFactory和UnpooledDataSourceFactory创建UnpooledDataSource每次UnpooledDataSource.getConnection()会创建一个新的链...原创 2019-11-12 20:12:16 · 250 阅读 · 0 评论 -
Mybatis源码解析——Binding模块
Bing将Mapper接口和Mapper.xml文件中的SQL语句相关联,启动时即可检测到错误其UML图如图所示mapperRegistry对象是Mapper接口及其代理对象工厂的注册中心MapperProxyFactory用来创建代理对象流程详解Mybatis初始化时会将所有配置信息映射到Configuration对象中Configuration对象的mapperRegistry...原创 2019-11-12 19:59:22 · 240 阅读 · 0 评论 -
Mybatis源码解析——缓存
缓存装饰器Mybatis的缓存使用了装饰器模式,装饰器类与被装饰类实现相同接口且持有被装饰类的实例。如具体装饰器2—持有—>具体装饰器1—持有—>基本实现类实现一步步的增强Jdk中的IO包里使用了很多的装饰器模式,如BufferedInputstream等cache核心实现类PerpetualCache为基本实现类,底层使用HashMap进行缓存;其余实现均为装饰器类B...原创 2019-11-12 19:18:34 · 143 阅读 · 0 评论 -
Mybatis源码解析——日志
日志原创 2019-11-12 19:11:17 · 153 阅读 · 0 评论 -
Mybatis源码解析——TypeHandler
TypeHandler负责JAVA类型与JDBC类型之间的转换,TypeHandler接口的方法分两类:void setParameter():负责将JAVA类型转换为JDBC类型T getResult():负责将数据从JDBC类型转换为JAVA类型BaseTypeHandler为Mybatis提供的抽象类,主要实现交给其子类实现。TypeHandler用于完成单个参数以及单个列值的...原创 2019-11-01 14:59:22 · 212 阅读 · 0 评论 -
Mybatis源码解析——反射工具箱
Reflector一个Class类对应的Reflector对象包括: //对应的Class类型 private final Class<?> type; //可读属性(有get方法的)名字数组 private final String[] readablePropertyNames; //可写属性(有set方法的)名字数组 private final Stri...原创 2019-10-31 18:56:20 · 453 阅读 · 0 评论 -
Mybatis源码解析——XPathParse
XPathParse解析器模块,使用xpath对xml进行解析Dom将XML一次性加载到内存中构造树形结构,操作简单,但内存占用大SAX部分加载,加载到某类型节点时会调用对应注册的回调函数,只能向后单向进行,且无法提供写操作StAXJDK提供的API,类似SAX,将XML文档作为一个事件流处理,由应用程序控制解析器进行解析,可以随时停止XPathXML查询语言,XPaht与XML...原创 2019-10-31 16:11:49 · 391 阅读 · 0 评论 -
Mybatis源码解析——初始化
配置文件Mybatis的初始化主要是对配置文件的解析,主要为Mybaits-config.xml和*Mapper.xml建造者模式Mybatis使用建造者模式来构建解析配置文件原创 2019-10-30 20:28:12 · 237 阅读 · 0 评论 -
Mybatis源码解析——SqlNode&SqlSource
SqlNode&SqlSourcexml文件中的sql节点会在初始化时被解析成MappedStatement对象,其中的sql语句会被解析成SqlSource对象,动态Sql节点等由SqlNode接口的相应实现类进行表示public interface SqlSource { BoundSql getBoundSql(Object parameterObject);}其中...原创 2019-10-30 09:28:49 · 797 阅读 · 0 评论 -
Mybatis源码解析——ResultSetHandler
ResultSetHandler负责将数据库返回的ResultSet映射为结果对象public interface ResultSetHandler {//处理结果集,生成对应的结果对象集 <E> List<E> handleResultSets(Statement stmt) throws SQLException;//处理结果集,生成对应的游标对象集 ...原创 2019-10-29 16:50:20 · 528 阅读 · 0 评论 -
Mybatis源码解析——KeyGenerator
KeyGenerator原创 2019-10-29 09:37:21 · 299 阅读 · 0 评论 -
Mybatis源码解析——StatementHandler
StatementHandler用于创建statement对象,SQL语句绑定实参,执行SQL语句RoutingStatementHandler根据mappedStatement中指定的stateType创建对应的statementHandler接口实现类,并设置到自身的delegate字段中,该类的其余所有方法均委托给delegate执行。比较像根据反射的动态策略模式的方式BaseSt...原创 2019-10-28 17:39:42 · 325 阅读 · 0 评论 -
Mybatis源码解析——Executor
ExecutorExecutor提供了数据库操作的一些方法以及Mybatis的缓存和事物管理功能。模板方法模式要实现某个方法,必须经过很多算法,但这些算法的顺序是固定的,将算法的运行顺序固定,并将不变的算法实现写好,可变的算法的实现交由子类自定义实现,即为模板方法模式。Executor使用了模板方法模式查缓存数据库操作更新缓存事物提交/回滚以上四个步骤顺序是固定不变的,Myb...原创 2019-10-28 16:36:05 · 270 阅读 · 0 评论 -
Mybatis源码解析——SqlSession
SqlSessionSqlSession是Mybaits对用户提供的使用接口,提供了一系列数据库及事物的操作接口,如增/删/改/查以及事物的提交/回滚等操作,用户在使用Mybatis时只需要跟SqlSession接口打交道即可。工厂模式SqlSession的设计使用了工厂模式,由SqlSessionFactory生产SqlSession对象。常用的默认实现为DefaultSqlSession...原创 2019-10-28 14:41:58 · 274 阅读 · 0 评论 -
pageHelper分页查询返回数量不正常
案例重现:列表查询,每页20条数据,web上显示第一页只有16条数据,第二页20条,第三页19条数据。后台查看sql日志,第一页的返回数量为20,debug断点调试发现结果集确实只有16条数据猜测原因:pageHelper的分页会在你的sql后面自动加上limit ?,?参数,如我的第一页会加上limit 1,20,代表第一页,20条数据。数据库确实返回了20条结果,但我的结果集映射中存...原创 2019-09-20 22:15:08 · 2626 阅读 · 0 评论 -
mybatis分页查询
limit用法:https://blog.youkuaiyun.com/u010947534/article/details/79878398mybatis分页查询:https://blog.youkuaiyun.com/chenbaige/article/details/70846902转载 2018-12-04 16:17:23 · 194 阅读 · 1 评论 -
mybatis插入自增主键返回
对于支持主键自增的sql而言,如mysql、sql server 如下方法:<insert id="addBook" parameterType="Book" useGeneratedKeys="true" keyProperty="book.bookId">添加useGeneratedKeys="true" keyProperty="book.boo原创 2018-09-16 10:20:53 · 2293 阅读 · 1 评论