MyBatis
MyBatis 相关知识
yin_jw
这个作者很懒,什么都没留下…
展开
-
MyBatis 概念
简介什么是MyBatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。...原创 2019-10-29 09:45:00 · 138 阅读 · 0 评论 -
MyBatis 示例-简介
简介为了全面熟悉MyBatis的使用,整理一个MyBatis的例子,案例中包含了映射器、动态 SQL的使用。本章先介绍项目结构和配置。项目地址:链接数据库表的模型关系:链接项目结构项目框架:Spring Boot、MyBatis、Mybatis-PageHelper、Druid、Swagger;db 目录存放数据库SQL文件,项目中使用...原创 2019-10-29 09:46:00 · 77 阅读 · 0 评论 -
MyBatis 示例-类型处理器
MyBatis提供了很多默认类型处理器,参考官网地址:链接,除了官网提供的类型处理器,我们也可以自定义类型处理器。具体做法为:实现org.apache.ibatis.type.TypeHandler接口, 或继承org.apache.ibatis.type.BaseTypeHandler类 , 然后可以选择性地将它映射到一个 JDBC 类型。测试类:com.yjw.de...原创 2019-10-29 09:47:00 · 141 阅读 · 0 评论 -
MyBatis 示例-传递多个参数
映射器的主要元素:本章介绍select元素中传递多个参数的处理方式。测试类:com.yjw.demo.MulParametersTest使用 Map 传递参数(不建议使用)使用 MyBatis 提供的 Map 接口作为参数来实现。StudentDao/** * 使用 Map 传递参数 * * @param params * @retur...原创 2019-10-29 09:48:00 · 221 阅读 · 0 评论 -
MyBatis 示例-主键回填
测试类:com.yjw.demo.PrimaryKeyTest自增长列数据库表的主键为自增长列,在写业务代码的时候,经常需要在表中新增一条数据后,能获得这条数据的主键 ID,MyBatis 提供了实现的方法。StudentMapper.xml<insert id="insertByAutoInc" parameterType="studentDO" keyPro...原创 2019-10-29 09:53:00 · 235 阅读 · 0 评论 -
MyBatis 示例-插件
简介利用 MyBatis Plugin 插件技术实现分页功能。分页插件实现思路如下:业务代码在 ThreadLocal 中保存分页信息;MyBatis Interceptor 拦截查询请求,获取分页信息,实现分页操作,封装分页列表数据返回;测试类:com.yjw.demo.PageTest插件开发过程确定需要拦截的签名MyBatis 插件可以拦截四...原创 2019-10-29 09:57:00 · 108 阅读 · 0 评论 -
MyBatis 示例-联合查询
简介MyBatis提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果。先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果。测试类:com.yjw.demo.JointQueryTest,提供了对嵌套查询和嵌套结果的测试。数据库表模型关系学生信息级联模型关系:链接学生信息级联模型关系是一个多种类型关联关系,包含了如下几种情况:其中...原创 2019-10-29 10:00:00 · 354 阅读 · 0 评论 -
MyBatis 示例-缓存
MyBatis提供两种类型的缓存,一种是一级缓存,另一种是二级缓存,本章通过例子的形式描述MyBatis缓存的使用。测试类:com.yjw.demo.CacheTest一级缓存MyBatis 默认开启一级缓存。一级缓存是相对于同一个 SqlSession 而言的,所以在参数和 SQL 完全一样的情况下,我们使用同一个 SqlSession 对象调用同一个 Mapper ...原创 2019-10-29 10:02:00 · 121 阅读 · 0 评论 -
MyBatis 示例-动态 SQL
MyBatis 的动态 SQL 包括以下几种元素:详细的使用参考官网文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html本章内容简单描述这些动态SQL在使用的过程中需要注意的地方。choose, when, otherwise比如我们要实现如下功能:当学生姓名不为空,则只用学生姓名作为条件查询...原创 2019-10-29 10:04:00 · 122 阅读 · 0 评论 -
MyBatis 源码篇-整体架构
MyBatis 的整体架构分为三层, 分别是基础支持层、核心处理层和接口层,如下图所示。基础支持层反射模块该模块对 Java 原生的反射进行了良好的封装,提供了更加简洁易用的 API ,方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。类型转换模块类型转换模块提...原创 2019-10-29 10:20:00 · 377 阅读 · 0 评论 -
MyBatis 源码篇-SQL 执行的流程
本章通过一个简单的例子,来了解 MyBatis 执行一条 SQL 语句的大致过程是怎样的。案例代码如下所示:public class MybatisTest { @Test public void selectByPrimaryKey() throws IOException { // 3 StudentDao st...原创 2019-10-29 10:31:00 · 248 阅读 · 0 评论 -
MyBatis 源码篇-资源加载
本章主要描述MyBatis 资源加载模块中的 ClassLoaderWrapper类和Java加载配置文件的三种方式。ClassLoaderWrapper上一章的案例,使用org.apache.ibatis.io.Resources#getResourceAsStream(java.lang.String)方法加载MyBatis的配置文件。Resources是一...原创 2019-10-29 10:41:00 · 172 阅读 · 0 评论 -
MyBatis 源码篇-日志模块1
在Java开发中常用的日志框架有Log4j、Log4j2、ApacheCommonLog、java.util.logging、slf4j等,这些日志框架对外提供的接口各不相同。本章详细描述MyBatis是如何通过适配器的方式集成和复用这些第三方框架的。日志适配器MyBatis的日志模块位于org.apache.ibatis.logging包中,该模块中...原创 2019-10-29 10:43:00 · 228 阅读 · 0 评论 -
MyBatis 源码篇-日志模块2
上一章的案例,配置日志级别为debug,执行一个简单的查询操作,会将JDBC操作打印出来。本章通过MyBatis日志部分源码分析它是如何实现日志打印的。在MyBatis的日志模块中有一个jdbc package,package中的内容如下图所示:BaseJdbcLogger是一个抽象类,它是jdbcpackage下其他类的父类,类继承关系如下图所示:...原创 2019-10-29 10:45:00 · 142 阅读 · 0 评论 -
MyBatis 源码篇-插件模块
本章主要描述MyBatis插件模块的原理,从以下两点出发:MyBatis是如何加载插件配置的?MyBatis是如何实现用户使用自定义拦截器对SQL语句执行过程中的某一点进行拦截的?示例准备首先准备两个拦截器示例,代码如下。@Intercepts({ @Signature(type = Executor.class, metho...原创 2019-10-29 10:50:00 · 144 阅读 · 0 评论 -
MyBatis 源码篇-DataSource
本章介绍MyBatis提供的数据源模块,为后面与Spring集成做铺垫,从以下三点出发:描述MyBatis数据源模块的类图结构;MyBatis是如何集成第三方数据源组件的;PooledConnection 设计初衷猜想;类图结构MyBatis数据源部分的代码在datasource目录下。提供了三种类型的数据源实现:unpooled(...原创 2019-10-29 10:55:00 · 229 阅读 · 0 评论 -
MyBatis 源码篇-Transaction
本章简单介绍一下MyBatis的事务模块,这块内容比较简单,主要为后面介绍mybatis-spring-1.**.jar(MyBatis与 Spring集成)中的事务模块做准备。类图结构MyBatis事务模块的代码在transaction包下:根据包的分类,提供了两种事务实现:jdbc、managed。我们还是先来看下事务模块整...原创 2019-10-29 10:57:00 · 156 阅读 · 0 评论 -
MyBatis 源码篇-MyBatis-Spring 剖析
本章通过分析mybatis-spring-x.x.x.jarJar 包中的源码,了解MyBatis是如何与Spring进行集成的。Spring配置文件MyBatis与Spring集成,在Spring配置文件中配置了数据源、SqlSessionFactory、自动扫描MyBatis中的Mapper接口、事务管理等,这部分内容都交由Spring管理...原创 2019-10-29 11:08:00 · 154 阅读 · 0 评论 -
MyBatis 数值类型 where 条件配置的坑
更多文章参考我的笔记:https://www.yuque.com/yinjianwei/vyrvkf复现异常我们先通过案例复现该类异常,测试项目地址:https://gitee.com/yin_jw/demo/tree/master/mybatis-demo/springboot-mybatis-demo,StudentMapper.xml 中根据条件获取学生信息的 SQL 配置...原创 2019-11-26 09:39:00 · 627 阅读 · 0 评论