mybatis中文版教程
mybatis入门教程

mybatis入门教程MyBatis是一种开源的持久层框架,它可以帮助我们简化数据库操作的过程。
本教程将介绍如何使用MyBatis进行基本的数据访问操作。
第一步:创建数据库和表首先,我们需要创建一个数据库和一个表来存储数据。
假设我们创建了一个名为"mybatis_demo"的数据库,并在其中创建了一个名为"users"的表,该表包含id、name和age三个字段。
第二步:引入MyBatis依赖在使用MyBatis之前,我们需要在项目的pom.xml文件中引入MyBatis的依赖。
可以在Maven仓库中找到最新的MyBatis版本,并将其添加到pom.xml文件中。
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>第三步:创建数据源配置文件在src/main/resources目录下创建一个名为"mybatis-config.xml"的文件,并在其中配置数据源信息。
以下是一个示例配置:<?xml version="1.0" encoding="UTF-8"?><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="url"value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/></dataSource></environment></environments><mappers><!-- 这里可以配置Mapper接口所在的包 --></mappers></configuration>注意:在实际项目中,我们通常会将数据库连接信息配置在外部的配置文件中,而不是直接写在mybatis-config.xml文件中。
mybatis入门教程(一)(超简单)

mybatis第一天mybatis的基础知识课程安排:mybatis和sprin gmvc通过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jdb c程序(单独使用jdb c开发)问题总结mybatis框架原理(掌握)mybatis入门程序用户的增、删、改、查mybatis开发dao两种方法:原始dao开发方法(程序需要编写d a o接口和d a o实现类)(掌握)mybaits的mappe r接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件Sq lMapConfig.xmlmybatis核心:mybatis输入映射(掌握)mybatis输出映射(掌握)mybatis的动态sql(掌握)第二天:高级知识订单商品数据模型分析高级结果集映射(一对一、一对多、多对多)mybatis延迟加载mybatis查询缓存(一级缓存、二级缓存)mybaits和sprin g进行整合(掌握)mybatis逆向工程1对原生态jdbc程序中问题总结1.1环境java环境:jdk1.7.0_72eclipse:indigomysql:5.11.2创建mysql数据导入下边的脚本:sql_table.sql:记录表结构sql_dat a.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本1.3jdbc程序使用jdbc查询mysql数据库中用户表的记录。
创建java工程,加入jar包:数据库驱动包(m ysql5.1)上边的是mysql驱动。
下边的是ora cle的驱动。
程序代码:1.4问题总结1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
设想:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到jav a代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
mybatis使用手册

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。
MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二、mybatis快速入门2.1、准备开发环境1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示:2、添加相应的jar包【mybatis】mybatis-3.1.1.jar【MYSQL驱动包】mysql-connector-java-5.1.7-bin.jar3、创建数据库和表,针对MySQL数据库SQL脚本如下:1createdatabase mybatis;2use mybatis;3CREATETABLE users(id INTPRIMARYKEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);4INSERTINTO users(NAME, age) VALUES('孤傲苍狼', 27);5INSERTINTO users(NAME, age) VALUES('白虎神皇', 27);将SQL脚本在MySQL数据库中执行,完成创建数据库和表的操作,如下:到此,前期的开发环境准备工作全部完成。
2.2、使用MyBatis查询表中的数据1、添加Mybatis的配置文件conf.xml在src目录下创建一个conf.xml文件,如下图所示:conf.xml文件中的内容如下:1<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">3<configuration>4<environments default="development">5<environment id="development">6<transactionManager type="JDBC"/>7<!-- 配置数据库连接信息 -->8<dataSource type="POOLED">9<property name="driver" value="com.mysql.jdbc.Driver"/>10<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> 11<property name="username" value="root"/>12<property name="password" value="XDP"/>13</dataSource>14</environment>15</environments>1617</configuration>2、定义表所对应的实体类,如下图所示:User类的代码如下:1package me.gacl.domain;23/**4 *@author gacl5 * users表所对应的实体类6*/7publicclass User {89//实体类的属性和表的字段名称一一对应10privateint id;11private String name;12privateint age;1314publicint getId() {15return id;16 }1718publicvoid setId(int id) {19this.id = id;20 }2122public String getName() {23return name;24 }2526publicvoid setName(String name) { = name;28 }2930publicint getAge() {31return age;32 }3334publicvoid setAge(int age) {35this.age = age;36 }3738 @Override39public String toString() {40return "User [id=" + id + ", name=" + name + ", age=" + age + "]";41 }42 }3、定义操作users表的sql映射文件userMapper.xml创建一个me.gacl.mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件,如下图所示:userMapper.xml文件的内容如下:1<?xml version="1.0" encoding="UTF-8" ?>2<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">3<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的4例如namespace="erMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)5-->6<mapper namespace="erMapper">7<!-- 在select标签中编写查询的SQL语句,设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复8使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型9resultType="er"就表示将查询结果封装成一个User类的对象返回10 User类就是users表所对应的实体类11-->12<!--13根据id查询得到一个user对象14-->15<select id="getUser"parameterType="int"16resultType="er">17 select * from users where id=#{id}18</select>19</mapper>4、在conf.xml文件中注册userMapper.xml文件1<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">3<configuration>4<environments default="development">5<environment id="development">6<transactionManager type="JDBC"/>7<!-- 配置数据库连接信息 -->8<dataSource type="POOLED">9<property name="driver" value="com.mysql.jdbc.Driver"/>10<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> 11<property name="username" value="root"/>12<property name="password" value="XDP"/>13</dataSource>14</environment>15</environments>1617<mappers>18<!-- 注册userMapper.xml文件,19 userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->20<mapper resource="me/gacl/mapping/userMapper.xml"/>21</mappers>2223</configuration>5、编写测试代码:执行定义的select语句创建一个Test1类,编写如下的测试代码:package me.gacl.test;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import er;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;publicclass Test1 {publicstaticvoid main(String[] args) throws IOException {//mybatis的配置文件String resource = "conf.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)InputStream is =Test1.class.getClassLoader().getResourceAsStream(resource);//构建sqlSession的工厂SqlSessionFactorysessionFactory =new SqlSessionFactoryBuilder().build(is);//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)//Reader reader = Resources.getResourceAsReader(resource); //构建sqlSession的工厂//SqlSessionFactorysessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建能执行映射文件中sql的sqlSessionSqlSession session = sessionFactory.openSession();/*** 映射sql的标识字符串,* erMapper是userMapper.xml文件中mapper标签的namespace属性的值,* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL*/String statement = "erMapper.getUser";//映射sql的标识字符串//执行查询返回一个唯一user对象的sqlUser user = session.selectOne(statement, 1);System.out.println(user);}}。
MyBatis中文教程

MyBatis中文教程1. SQL和Java代码的解耦:MyBatis将SQL代码和Java代码分离,通过配置文件中的映射来实现二者之间的映射关系,这样可以减少代码的冗余和维护的工作量。
2. 灵活的SQL查询:MyBatis提供了强大的SQL查询功能,支持动态SQL、参数处理、结果映射等功能,可以灵活地编写和执行各种SQL查询。
3. 缓存支持:MyBatis支持多级缓存机制,可以提高查询性能。
它提供了一级缓存和二级缓存的支持,可以根据需要进行配置和开启。
4. 事务支持:MyBatis对JDBC的事务做了封装,提供了简单易用的事务管理机制,可以很方便地实现数据库事务的控制。
5. 易于集成:MyBatis是一个独立的框架,可以很容易地集成到Java项目中,支持各种常见的数据库。
使用MyBatis的基本步骤如下:1. 添加MyBatis的依赖:在项目的pom.xml文件中添加MyBatis的依赖,或者将MyBatis的jar包添加到项目的classpath中。
2. 创建映射文件:创建一个XML文件,用于配置SQL语句和结果映射规则。
该文件一般包含一个<mapper>元素和多个<sql>元素。
3. 配置数据源:在项目的配置文件中配置数据源,用于连接数据库。
可以使用JDBC的数据源,也可以使用其他的数据源,如C3P0、Druid等。
4. 创建SqlSessionFactory:使用MyBatis的API创建一个SqlSessionFactory对象,该对象是一个线程安全的工厂类,用于创建SqlSession。
5. 创建SqlSession:使用SqlSessionFactory创建一个SqlSession 对象,该对象用于执行SQL语句和管理事务。
每个线程应该有一个独立的SqlSession对象。
6.编写SQL语句:在映射文件中编写SQL语句,可以使用动态SQL、参数处理和结果映射等特性。
MyBatis3用户指南中文版

Mybatis教程及使用配置

Mybatis教程及使用配置2013-11-22 | 所属分类:Mybatis 教程入门配置12_17一.Mybatis简介MyBatis由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项目。
2010 年5 月,将代码库迁至Google Code,并更名为MyBatis。
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。
MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。
相对Hibe rnate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
二.从JDBC到Mybatis1. JDBC查询数据库数据,一般需要以下七个步骤:(1)加载JDBC驱动(2)建立并获取数据库连接(3)创建 JDBC Statements 对象(4)设置SQL语句的传入参数(5)执行SQL语句并获得查询结果(6)对查询结果进行转换处理并将处理结果返回(7)释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)实现JDBC有七个步骤,哪些步骤是可以进一步封装的,减少我们开发的代码量?2. JDBC演变到Mybatis过程第一步优化:连接获取和释放问题描述:通过JDBC的方式数据库连接频繁的开启和关闭本身就造成了资源的浪费,影响系统的性能;但是现在连接池多种多样,可能存在变化,有可能采用DBCP的连接池,也有可能采用容器本身的JNDI数据库连接池。
解决问题:数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题,通过连接池就可以反复利用已经建立的连接去访问数据库了,减少连接的开启和关闭的时间。
同时通过DataSource进行隔离解耦,统一从DataSource里面获取数据库连接,DataSource 具体由DBCP实现还是由容器的JNDI实现都可以,将DataSource的具体实现通过让用户配置来应对变化。
mybatis的使用方法

mybatis的使用方法
MyBatis是一个开源的持久层框架,它可以为Java应用程序提供数据库访问的解决方案。
MyBatis优化了Java应用程序与数据库之间的通信过程,提高了应用程序的性能和可维护性。
下面是MyBatis 的使用方法:
1. 配置数据源
在MyBatis中,需要配置数据源来连接数据库。
可以使用JNDI 或者直接在mybatis-config.xml文件中配置数据源。
在该文件中,还可以配置数据库的基本信息,如driver、url、username等。
2. 定义Mapper
Mapper是MyBatis中最重要的组成部分,它用于定义Java对象和数据库表之间的映射关系。
可以使用注解或XML来定义Mapper。
3. 编写SQL语句
在Mapper中,需要编写SQL语句来对数据库进行操作。
可以使用MyBatis提供的动态SQL语句来编写更加灵活的SQL。
4. 执行SQL语句
在Java应用程序中,可以通过MyBatis提供的SqlSession来执行SQL语句。
可以使用SqlSession的方法来进行增删改查等操作。
5. 处理结果集
执行SQL语句后,需要将结果集映射到Java对象中。
可以使用MyBatis提供的ResultMap来进行结果集的映射。
可以使用注解或XML 来定义ResultMap。
以上就是MyBatis的基本使用方法。
通过MyBatis,可以使Java 应用程序更加简洁、高效。
MyBatis使用方法

MyBatis使用方法使用MyBatis的基本步骤如下:1. 引入MyBatis的依赖:在项目的pom.xml文件中添加MyBatis的依赖,或者将其添加到项目的构建路径中。
2.配置数据源:在项目的配置文件中配置数据库的连接信息,包括数据库驱动类,URL,用户名和密码等。
3. 创建数据模型:创建Java类来表示数据库中的表和字段。
可以使用注解或XML配置来映射Java类和数据库表。
4. 创建Mapper接口:创建一个接口来定义数据库操作的方法。
每个方法都对应一个SQL语句,可以使用注解或XML配置来定义SQL语句。
5. 创建Mapper映射文件:如果使用XML配置来定义SQL语句,需要创建一个与Mapper接口同名的XML文件,并在其中定义SQL语句。
6. 创建SqlSessionFactory:使用MyBatis提供的配置文件和数据源信息创建一个SqlSessionFactory对象。
SqlSessionFactory是MyBatis的核心接口,用于创建SqlSession对象。
7. 创建SqlSession:使用SqlSessionFactory创建SqlSession对象。
SqlSession是与数据库交互的入口,可以通过它执行SQL语句。
8. 执行SQL语句:使用SqlSession对象调用Mapper接口的方法来执行SQL语句。
MyBatis会根据Mapper接口的定义和配置文件中的SQL 语句,自动执行相应的操作。
9. 处理结果:根据SQL语句的类型,可以通过SqlSession的一些方法来获取查询结果。
对于更新和删除操作,可以通过返回的整数值来判断操作是否成功。
10. 关闭SqlSession:在使用完SqlSession后,需要手动关闭它。
可以使用try-with-resources语句来确保SqlSession被正确关闭。
除了上述基本步骤外,MyBatis还提供了一些高级功能,如动态SQL,一对一和一对多关系的映射,缓存等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MyBatis Spring1.0.0-RC3参考文档MyBatis 社区()Copyright © 2010本文档的拷贝仅允许您个人使用或分发给其他用户,但是不能收取任何费用,后期的发布无论是印刷版或电子版,也会进行版权声明。
本文档由南磊(nanlei1987@)翻译目录第一章介绍 (3)1.1 整合动机 (3)1.2 要求 (3)1.3 感谢 (3)第二章入门 (4)2.1 安装 (4)2.2 快速创建 (4)第三章SqlSessionFactoryBean (6)3.1 创建 (6)3.2 属性 (6)第四章事务 (8)4.1 标准配置 (8)4.2 容器管理事务 (8)第五章使用SqlSession (9)5.1 SqlSessionSupport (9)5.2 SqlSessionTemplate (9)第六章MapperFactoryBean (11)6.1 创建 (11)6.2 注入映射器 (11)6.3 自动配置 (12)第七章使用MyBatis API (13)第八章示例代码 (14)第一章介绍1.1 整合动机正如第二版,Spring仅支持iBatis2。
那么我们就想将MyBatis3的支持加入到Spring3.0(参考Spring的Jira的问题)中。
不幸的是,Spring 3.0的开发在MyBatis 3.0官方发布前就结束了。
因为Spring开发团队不想发布一个基于非发行版的MyBatis的整合支持,那么Spring 官方的支持就不得不等到至少3.1版本了。
要在Spring中支持MyBatis,MyBatis社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始进行Spring和MyBatis整合的时候了。
这个小类库就来创建丢失的粘贴Spring和MyBtatis这两个流行框架的胶水。
减少用户不得不来配置MyBatis和Spring 3.X上下文环境的样板和冗余代码。
它还透明地增加了Spring 对MyBatis事务的支持。
1.2 要求在开始阅读本手册之前,很重要的一点是你要熟悉Spring和MyBatis这两个框架还有和它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。
和MyBatis一样,MyBatis-Spring也需要Java 5或更高版本。
1.3 感谢非常感谢那些使得本项目成为现实的人们(按字母顺序排序)。
Eduardo Macarron,Hunter Presnall和Putthibong Boonbong的编码工作,测试和文档修改;Andrius Juozapaitis,Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并把他们带入项目之中。
没有他们的努力,这个项目是不可能存在的。
第二章 入门MyBatis-Spring 帮助了你的MyBatis 代码和Spring 进行无缝整合。
使用这个类库中的类,Spring 将会为你加载必要的MyBatis 工厂和session 类。
这个小类库也会提供一个简便的方式向你的service 层bean 中注入MyBatis 的数据映射器。
最终,MyBatis-Spring 将会控制事务,翻译MyBatis 异常到Spring 的DataAccessException 异常(数据访问异常,译者注)。
2.1 安装要使用MyBatis-Spring 模块,你只需要包含mybatis-spring-1.0.0-RC3.jar 文件,并在类路径中加入依赖关系。
如果你使用Maven ,那么在pom.xml 中加入下面的代码即可:2.2 快速创建要和Spring 一起使用MyBatis ,你需要在Spring 应用上下文中定义至少两样东西:一个SqlSessionFactory 和至少一个数据映射器类。
在MyBatis-Spring中,SqlSessionFactoryBean 是用于创建SqlSessionFactory .的。
要配置这个工厂bean ,放置下面的代码在Spring 的XML 配置文件中: 要注意SqlSessionFactory 需要一个DataSource .(数据源,译者注)。
这可以是任意的DataSource .,配置它就和配置其它Spring数据库连接一样。
假设你有一个如下编写的数据映射器类:那么可以使用,像下面这样来把接口加入到Spring 中:要注意指定的映射器类必须是一个接口,而不是具体的实现类。
在这个示例中,注解被用来指定SQL语句,但是MyBatis的映射器XML文件也可以用。
一旦配置好,你可以以注入其它任意Spring的bean相同的方式直接注入映射器到你的business/service对象中。
MapperFactoryBean控制SqlSession创建和关闭它。
如果使用了Spring的事务,那么当事务完成时,session将会提交或回滚。
最终,任何异常都会被翻译成Spring的DataAccessException异常。
调用MyBatis数据方法现在只需一行代码:第三章 SqlSessionFactoryBean在基本的MyBatis 中,session 工厂可以使用SqlSessionFactoryBuilder .来创建。
在MyBatis-Spring 中,使用了SqlSessionFactoryBean 来替代。
3.1 创建要创建工厂bean ,放置下面的代码在Spring 的XML 配置文件中:要注意SqlSessionFactoryBean 实现了Spring 的FactoryBean 接口(请参考Spring 文档的3.8章节部分)。
这就说明Spring最终创建的bean 不是SqlSessionFactoryBean 本身完成的,但是工厂类getObject()返回的方法的结果是基于那个类的。
这种情况下,Spring 将会在应用启动时为你创建SqlSessionFactory 对象,然后将它以SqlSessionFactory 为名来存储。
在Java 中,相同的代码是:在普通的MyBatis-Spring 用法中,你不需要使用SqlSessionFactoryBean 或直接和其对应的SqlSessionFactory 。
而session 工厂将会被注入到MapperFactoryBean 中或其它扩展了SqlSessionDaoSupport 的DAO (Data Access Object ,数据访问对象,译者注)中。
3.2 属性SqlSessionFactory 有一个必须的属性,就是JDBC 的DataSource 。
这可以是任意的DataSource ,配置和其它的Spring 数据库连接是一样的。
一个通用的属性是configLocation ,它是用来指定MyBatis 的XML 配置文件路径的。
如果基本的MyBatis 配置需要改变,那么这就是一个需要它的地方。
通常这会是<settings>或<typeAliases>部分。
要注意这个配置文件不需要是一个完整的MyBatis 配置。
确定地来讲,任意环境,数据源和MyBatis 的事务管理器都会被忽略。
SqlSessionFactoryBean 会创建它自己的,使用这些值定制MyBatis 的Environment 时是需要的。
如果MyBatis 映射器XML 文件在和映射器类相同的路径下不存在,那么另外一个需要配置文件的原因就是它了。
使用这个配置,有两种选择。
第一是手动在MyBatis 的XML 配置文件中使用<mappers>部分来指定类路径。
第二是使用工厂bean 的mapperLocations 属性。
mapperLocations 属性一个资源位置的list 。
这个属性可以用来指定MyBatis 的XML 映射器文件的位置。
它的值可以包含Ant 样式来加载一个目录中所有文件,或者从基路径下递归搜索所有路径。
比如:这会从类路径下加载在sample.config.mappers包和它的子包中所有的MyBatis映射器XML文件。
在容器环境管理事务中,一个可能需要的属性是transactionFactoryClass。
我们可以在第四章(事务)中来查看有关部分。
第四章 事务一个使用MyBatis-Spring 的主要原因是它允许MyBatis 参与到Spring 的事务中。
而不是给MyBatis 创建一个新的特定的事务管理器,MyBatis-Spring 利用了Spring 中的DataSourceTransactionManager 。
一旦Spring 的PlatformTransactionManager 配置好了,你可以在Spring 中以你通常的做法来配置事务。
@Transactional 注解和AOP (Aspect-Oriented Program ,面向切面编程,译者注)样式的配置都是支持的。
在事务期间,一个单独的SqlSession 对象将会被创建和使用。
当事务完成时,这个session 会以合适的方式提交或回滚。
一旦事务创建之后,MyBatis-Spring 将会透明的管理事务。
在你的DAO 类中就不需要额外的代码了。
4.1 标准配置要开启Spring 的事务处理,在你的Spring 的XML 配置文件中简单创建一个DataSourceTransactionManager 对象:指定的DataSource 可以是你通常使用Spring 的任意JDBC DataSource 。
这包含了连接池和通过JNDI 查找获得的DataSource 。
要注意,为事务管理器指定的DataSource 必须和用来创建SqlSessionFactoryBean 的是同一个数据源,否则事务管理器就无法工作了。
4.2 容器管理事务如果你正使用一个JEE 容器而且想让Spring 参与到容器管理事务(Container managed transactions ,CMT ,译者注)中,那么Spring 应该使用JtaTransactionManager 或它的容器指定的子类来配置。
做这件事情的最方便的方式是用Spring 的事务命名空间: 在这种配置中,MyBatis 将会和其它由CMT 配置的Spring 事务资源一样。
Spring 会自动使用任意存在的容器事务,在上面附加一个SqlSession 。
如果没有开始事务,或者需要基于事务配置,Spring 会开启一个新的容器管理事务。
注意,如果你想使用CMT ,而不想使用Spring 的事务管理,你就必须配置SqlSessionFactoryBean 来使用基本的MyBatis 的ManagedTransactionFactory ::第五章使用SqlSession在MyBatis中,你可以使用SqlSessionFactory来创建SqlSession。