欢迎访问小程序员!

下载本文档的PDF版本 MyBatis Geneator中文文档 MyBatis Geneator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。 注:本文后面提到的MBG全部指代MyBatis Generator。 运行MyBatis Generator 有4种运行MBG的方法,具体请看文档 运行 My ....

MyBatis拦截器介绍 MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。那么拦截器拦截MyBatis中的哪些内容呢? 我们进入官网看一看: MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) Paramet ....

什么是MyBatis             MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 MyBatis简单示例       虽然在使用MyBatis时一般都会使用XML文件,但是本文为了分析程序的简单性,简单的测 ....

MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍: MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器。MyBatis还提供A ....

前方高能! 本文内容有点多,通过实际测试例子+源码分析的方式解剖MyBatis缓存的概念,对这方面有兴趣的小伙伴请继续看下去~ MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍: MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓 ....

最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅。在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, 好啦,鄙人不喜欢口水话,还是直接上干活吧: 1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过SqlSession去执行sql语句(注意:是从表面看,实际的待会儿 ....

MyBatis 3.2.6插入时候获取自增主键方法有二  以MySQL5.5为例:  方法1: <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd) values(#{name},#{pswd}) </inse ....

上篇文章简单介绍了mybatis的查询,至此,CRUD都已讲完。本文将介绍mybatis强大的动态SQL。 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用? 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQL语句,从而提高开发人员的效 ....

使用环境:Mybatis_3.2.8 + Log4j2_2.1 首先要说明的是: Mybatis是用Mapper类的全路径名,作为logger的名称的。 Mybatis中,打印SQL语句的日志级别是DEBUG,而打印SQL执行结果集的日志级别是TRACE。(因为有些SQL可能语句简单,但是结果集很多,分开级别,有利于用户控制输出。) 记住这两点,对控制Mybatis的SQL日志输出很重要。 比如,我们的应用是: com.test.app 而mapper类所在的路径为: com.test.app.dao 则我 ....

本篇将介绍select、resultMap的用法。select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射。下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的唯一标识符,可被用来代表这条语句。 一个命名空间(namespace) 对应一个dao接口, 这个id ....

从本篇文章开始,将会介绍mapper映射文件的配置, 这是mybatis的核心之一,一定要学好。在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。 本篇文章将简单介绍 insert, update, delete 的配置及使用,以后会对mybatis的源码进行深入讲解。 相信,看到insert, update, delete, 我们就知道其作用了,顾 ....

本次将结束对于mybatis的配置文件的学习, 本次涉及到剩下没提及到的几个节点的配置:objectFactory、databaseIdProvider、plugins、mappers。 那么,接下来,就简单介绍一下这几个配置的作用吧: 1、objectFactory是干什么的? 需要配置吗? MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实 ....

log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.logger.com.ibatis=INFO log4j.logger.com.ibatis.common.jdbc.SimpleDataS ....

更新单条记录 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 UPDATE course SET name = 'course1' WHERE id in ('id1', 'id2', 'id3); 更新多条记录为多个字段为不同的值 比较普通的写法,是通过循环,依次执行update语句。 Mybatis写法如下: <update id="updateBatch" paramete ....

本篇将为大家介绍TypeHandler, 并简单分析其源码。 Mybatis中的TypeHandler是什么? 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型。Mybatis默认为我们实现了许多TypeHandler, 当我们没有配置指定TypeHandler时,Mybatis会根据参数或者返回结果的不同,默认为我们选择合适的TypeHandler处理。 那么,Mybatis ....

本篇继续讲剩下的配置节点之一:typeAliases。 typeAliases节点主要用来设置别名,其实这是挺好用的一个功能, 通过配置别名,我们不用再指定完整的包名,并且还能取别名。 例如: 我们在使用 com.demo.entity. UserEntity 的时候,我们可以直接配置一个别名user, 这样以后在配置文件中要使用到com.demo.entity. UserEntity的时候,直接使用User即可。 就以上例为例,我们来实现一下,看看typeAliases的配置方法: <configu ....

我们通过对mybatis源码的简单分析,可看出,在mybatis配置文件中,在configuration根节点下面,可配置properties、typeAliases、plugins、objectFactory、objectWrapperFactory、settings、environments、databaseIdProvider、typeHandlers、mappers这些节点。那么本次,就会先介绍properties节点和environments节点。 为了让大家能够更好地阅读mybatis源码,我先 ....

本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们以 SqlSessionFactoryBuilder 去创建 SqlSessionFactory,  那么,我们就先从SqlSessionFactoryBuilder入手, 咱们先看看源码是怎么实现的: SqlSessionFactoryBuilder源码片段: 1 public class SqlSessionFactoryBuilder { 2 3 //Reader读取mybatis配置文件,传入构造方法 4 //除 ....

最近两年 springmvc + mybatis 的在这种搭配还是蛮火的,楼主我呢,也从来没真正去接触过mybatis, 趁近日得闲, 就去学习一下mybatis吧。 本次拟根据自己的学习进度,做一次关于mybatis 的一系列教程, 记录自己的学习历程, 同时也给还没接触过mybatis的朋友探一次道。本系列教程拟 由浅(使用)入深(分析mybatis源码实现),故可能需要好长几天才能更新完。好啦,下面就开始本次的mybatis 学习之旅啦, 本次为第一篇教程, 就先简单地写个demo, 一起来认识一下m ....

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 那么我比较困惑的一点是,mybatis的mapper接口并没有任何实现它的实例,那它是怎么利用动态代理来进行mapper xml与接口的连接呢?下面我将从源码成名说明一下整 ....