继续使用前一篇的例子http://www.cnblogs.com/EasonJim/p/7052368.html,实际项目中,通常会用Spring来管理DataSource等。充分利用Spring基于接口的编程,以及AOP、IOC带来的方便。用Spring来管理MyBatis与管理Hibernate有很多类似的地方。

下面是实际整合步骤,集成最简单的Spring功能:

0、项目结构:

1、POM引入相关依赖,配置如下:

        <!-- Spring Core -->
<!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.4.RELEASE</version>
</dependency> <!-- Spring Context -->
<!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.4.RELEASE</version>
</dependency> <!-- Spring JDBC -->
<!-- http://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency> <!-- mysql-connector-java -->
<!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency> <!-- mybatis -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency> <!-- mybatis-spring -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency> <!-- commons-dbcp -->
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

2、配置beans.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--采用DBCP连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean> <!-- 新建SessionFactonry -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--dataSource属性指定要用到的连接池 -->
<property name="dataSource" ref="dataSource" />
<!--configLocation属性指定mybatis的核心配置文件 -->
<property name="configLocation" value="Configuration.xml" />
</bean> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--sqlSessionFactory属性指定要用到的SqlSessionFactory实例 -->
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<!--mapperInterface属性指定映射器接口,用于实现此接口并生成映射器对象 -->
<property name="mapperInterface" value="com.jsoft.testmybatis.inter.IUserOperation" />
</bean> </beans>

org.mybatis.spring.SqlSessionFactoryBean与org.mybatis.spring.mapper.MapperFactoryBean实现了Spring的接口,并产生beans对象。

3、去除之前在Configuration.xml配置的数据库连接信息,改成如下配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <typeAliases>
<typeAlias alias="User" type="com.jsoft.testmybatis.models.User" />
<typeAlias alias="Article" type="com.jsoft.testmybatis.models.Article" />
</typeAliases> <mappers>
<mapper resource="com/jsoft/testmybatis/models/User.xml" />
</mappers> </configuration>

4、最后是测试代码的核心部分,完全去除了MyBatis新建SessionFactory的部分,代码如下所示:

        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

        IUserOperation mapper = (IUserOperation) ctx.getBean("userMapper");
// 测试id=1的用户查询,根据数据库中的情况,可以改成你自己的.
System.out.println("得到用户id=1的用户信息");
User user = mapper.selectUserByID(1);
System.out.println(user.getUserAddress()); // 得到文章列表测试
System.out.println("得到用户id为1的所有文章列表");
List<Article> articles = mapper.getUserArticles(1); for (Article article : articles) {
System.out.println(article.getContent() + "--" + article.getTitle());
}

5、测试结果:

可以看出,效果和没有和Spring整合时基本一致。只是代码上简化了操作。

测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test5

参考:

http://www.yihaomen.com/article/java/309.htm

最新文章

  1. Android基础总结(十)
  2. C#的变迁史 - C# 4.0 之线程安全集合篇
  3. JavaScript箭头函数 和 generator
  4. ros下多机器人系统(1)
  5. 转载:Cellebrite携两大移动数据服务强势来华
  6. HDU 2491 Priest John&#39;s Busiest Day
  7. hdu 1008 Elevator
  8. [DllImport(&quot;kernel32.dll&quot;)]是什么意思??
  9. 【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式
  10. [反汇编练习] 160个CrackMe之020
  11. Web前端新人笔记之height、min-height的区别
  12. COJN 0487 800301红与黑
  13. [TYVJ] P1003 越野跑
  14. shell的数组操作
  15. DOT + graphviz 轻松画图
  16. C#改动文件或目录的权限,为指定用户、用户组加入全然控制权限
  17. background-image 与 img 动画性能对比
  18. [LeetCode] Shopping Offers 购物优惠
  19. Android破解学习之路(十四)——【Unity3D】王牌大作战破解
  20. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;Web版本新增新的角色授权管理界面效率更高、更规范

热门文章

  1. BZOJ3990:[SDOI2015]排序——题解
  2. BZOJ4754 &amp; 洛谷4323 &amp; LOJ2072:[JSOI2016]独特的树叶——题解
  3. BZOJ4889 &amp; 洛谷3759:[TJOI2017]不勤劳的图书管理员——题解
  4. 洛谷 P1841 [JSOI2007]重要的城市 解题报告
  5. CodeForces 185A. Plant (矩阵快速幂)
  6. 认识MEAN开发框架[转]
  7. 爬虫实例——爬取淘女郎相册(通过selenium、PhantomJS、BeautifulSoup爬取)
  8. UVA10600:ACM Contest and Blackout(次小生成树)
  9. [LeetCode] 2. Add Two Numbers ☆☆
  10. Matlab 工具箱介绍