MyBatis运行原理SQLSessionFactory的初始化

一、前言 在前面的章节中,我们简单的介绍了一下MyBatis是如何配置使用的,为了更深切的体会到MyBatis的精髓,这一节我们将通过代码简单的看一看MyBatis的源码,分析一下MyBatis的执行流程 二、案例 修改MyBatisTest文件 在32行处,打上断点,运行,方法进入,...

2018-07-23 07:01:50

阅读数 401

评论数 0

MyBatis插件开发原理

一、前言 MyBatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变MyBatis的默认行为(诸如SQL重写之类的),由于插件会深入到MyBatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。 MyBatis在四大对象的创建过程中,都会有...

2018-07-20 07:03:38

阅读数 581

评论数 0

老司机学习MyBatis之逆向工程MGB的简单使用

一、前言 MyBatis Generator简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询,这样能够大大减少我们平时开发的工作量。但是表连接、存储过程等这些复杂sql的定义需...

2018-07-19 07:16:59

阅读数 390

评论数 0

老司机学习MyBatis之整合ehcache缓存框架

一、前言 MyBatis为我们提供了Cache接口,也提供了一些实现类,进入Cache接口源码,可以看到缓存对于MyBatis来说就是一个Map,比较简陋。但是大家都知道MyBatis是一个专注于持久层框架,与数据库打交道MyBatis是很专业的,但是对于缓存它就略显不足,即便如此MyBatis...

2018-07-16 20:28:27

阅读数 108

评论数 0

老司机学习MyBatis之一级、二级缓存的相关设置详解

一、前言 前面两个章节,我们简单的介绍了一级缓存和二级缓存,并对它们的使用有了初步的了解,下面我们将从以下几个配置深入的了解一下几个常用的配置对一二级缓存的影响。 二、案例 ①全局setting的cacheEnable 这个配置我们在使用二级缓存的时候有用到,如果配置成false,二级缓存...

2018-07-16 20:24:45

阅读数 77

评论数 0

老司机学习MyBatis之二级缓存的使用

一、前言二级缓存是Application应用级别的缓存,它的是生命周期很长,跟Application的声明周期一样,也就是说它的作用范围是整个Application应用。二级缓存也叫做全局缓存,基于namespace级别的缓存,一个namespace对应一个二级缓存。①MyBatis将Applic...

2018-06-24 21:20:57

阅读数 88

评论数 0

老司机学习MyBatis之一级缓存原理以及失效情况

一、前言MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性,用户不能配置,默认情况下自动支持的缓存,用户没有定制它的权利(不过这...

2018-06-22 06:58:28

阅读数 1012

评论数 0

菜鸟学习IntelliJ IDEA之如何创建普通的Java工程

一、前言前面两个章节我们分别讲解了Windows和Linux两种不同的环境下InteliJ IDEA是如何安装的,后续几个章节我们将来看看如何通过InteliJ IDEA来创建项目和一些其他技巧性的使用方法,这一节我们将简单介绍一下InteliJ IDEA是如何创建普通的Java工程的。二、步骤首...

2018-06-15 07:40:40

阅读数 1011

评论数 0

老司机学习MyBatis之动态SQL使用foreach在Oracle中批量插入

一、前言前面一节,我们讲解了在MySQL下如何通过foreach批量插入数据,这一节,我们将介绍在Oracle下批量插入数据,也有两种方式。二、案例完整的工程目录结构如下在Oracle下创建数据库表t_emp,并创建序列CREATE TABLE t_emp ( id number(10) NO...

2018-06-14 21:38:18

阅读数 1317

评论数 1

老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入

一、前言当我们使用MyBatis一次性插入多条数据时候也可以使用foreach标签,本文我们将介绍MySQL中使用MyBatis批量插入数据的两种方式。二、案例①第一种方式修改EmpMapper文件,增加batchSave方法/** * 批量插入数据 * @param empList */ pub...

2018-06-14 07:19:25

阅读数 5078

评论数 0

老司机学习MyBatis之动态SQL使用foreach遍历集合

一、前言foreach 就是遍历迭代,在SQL中通常用在 in 这个关键词的后面。foreach元素的属性主要有 item,index,collection,open,separator,close这6种<foreach collection="&q...

2018-06-13 21:36:35

阅读数 697

评论数 0

老司机学习MyBatis之动态SQL使用set执行更新操作

一、前言当在 update 语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置 SET 关键字,并剔除追加到条件末尾的任何不相关的逗号。使用 if+set 标签修改后,如果某项为 null 则不进行更新,而是保持数据库原值。二、案例我们先来看看不用s...

2018-06-13 07:25:56

阅读数 3136

评论数 0

老司机学习MyBatis之动态SQL使用choose分支

一、前言choose元素的作用就相当于Java语法中的switch语句,跟SQL语法case..when..then..else也差不多,基本上跟JSTL中的choose的作用和用法是一样的,通常都是与when和otherwise搭配的。二、案例EmpMapper类/** * 根据部门ID查询该...

2018-06-12 19:24:31

阅读数 327

评论数 0

老司机学习MyBatis之动态SQL使用trim自定义字符串截取

一、前言前面一个章节讲到,如果where标签里面,and或者or写在后面,最后字符串拼串后,如果最后一个条件没有加上,可能会出现SQL多出 and或者or 的情形。那我们是不是没有办法解决这种问题的产生,事实上MyBatis为我们提供了另外一种标签trim,可以简单粗暴的解决这个问题,下面我们通过...

2018-06-11 22:18:16

阅读数 1173

评论数 0

老司机学习MyBatis之如何使用动态SQL之使用where条件

一、前言前面一节我们最后留下了一个疑问,如果第一个条件当id为空的时候,我们的SQL语句拼接就产生了问题,我们先通过案例复现一下这个问题,修改testFindEmpByCondition方法@Test public void testFindEmpByCondition() throws IOEx...

2018-06-10 12:24:15

阅读数 549

评论数 0

老司机学习MyBatis之如何使用动态SQL之使用if条件

一、前言什么是动态SQL? 动态SQL有什么作用?如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。通常使用动态 SQL 不可能是独...

2018-06-10 12:23:45

阅读数 405

评论数 0

老司机学习MyBatis之如何使用association或者collection实现延迟加载

一、前言ResultMap可实现高级映射(使用association、collection实现一对一及一对多映射),且association、collection都具备延迟加载功能。延迟加载:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。二、...

2018-06-10 11:47:18

阅读数 190

评论数 0

老司机学习MyBatis之如何使用collection解决一对多关联查询

一、前言上一章节《老司机学习MyBatis之如何使用association解决一对一关联查询》,我们介绍了MyBatis使用association通过嵌套查询和分段查询两种方式在查询User表的时候关联查询出Role表的信息,我们发现association针对的是一对一的这种关联,那么如果是一对多...

2018-06-10 11:34:35

阅读数 159

评论数 0

老司机学习MyBatis之如何使用association解决一对一关联查询

一、前言这一节,我们将学习一下如何通过MyBatis提供的association关键字来实现关联查询,主要是实现一对一关联查询。有两种实现方式,分别是嵌套查询和分段查询。二、案例完整的工程目录如下:在MySQL数据库新建两张数据库表t_user和t_role,并插入若干条数据CREATE TABL...

2018-06-10 08:12:58

阅读数 145

评论数 0

老司机学习MyBatis之如何通过select返回Map

一、案例当要查询的结果是一个Map的时候,这里分为两种情况:①返回单条记录<select id="getUserByIdReturnMap" resultType="map"> s...

2018-06-10 07:45:39

阅读数 2054

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭