Spring整合MyBatis

1. 整合 Spring

【整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务】

1). 加入 Spring 的 jar 包和配置文件

<1>、Spring框架需要的jar包:

com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-logging-1.1.1.jar
spring-aop-4.0.0.RELEASE.jar
spring-aspects-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-jdbc-4.0.0.RELEASE.jar
spring-orm-4.0.0.RELEASE.jar
spring-tx-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar

<2>、Spring的配置文件Spring.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" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

	<!-- 扫描包 -->
	<context:component-scan base-package="com.neuedu">
		<context:exclude-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
		<!-- 处理全局异常,可以标记在类上 -->
		<context:exclude-filter type="annotation"
			expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>

	<!-- 加载外部属性文件(数据库驱动) -->
	<context:property-placeholder location="classpath:jdbc.properties" />

	<!-- 配置数据库加载内容(c3p0) -->
	<bean id="ComboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
	</bean>

     <!-- 对于 mybatis 而言,使用的事务管理器是 DataSourceTransactionManager -->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="ComboPooledDataSource" />
     </bean>

     <tx:annotation-driven />

	<!-- 配置SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="ComboPooledDataSource"></property>
          <!-- 配置mybatis配置文件的位置和名称 -->
		<property name="configLocation" value="classpath:mytabis-config.xml"></property>
	</bean>
	<!-- 扫描接口和sql配置文件 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.neuedu.mapper"></property>
	</bean>
</beans>

  

2). 加入 mybatis 的 jar 包和配置文件:实际上需要配置的就是 settings 的部分。

<1>、mybatis需要的jar包:

mybatis-3.2.8.jar

<2>、mybatis的配置文件mytabis-config.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>
	<settings>
          <!-- 支持数据库中下划线命名的参数向项目对象中驼峰式命名的属性自动匹配 -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
          <!-- 支持懒加载 -->
          <setting name="lazyLoadingEnabled" value="true"/> </settings> </configuration>
     </settings>
</configuration>

3). 加入数据库驱动和数据库连接池的 jar 包

<1>、加入数据库驱动jdbc.properties:

jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/mytabis
jdbc.driver=com.mysql.jdbc.Driver

<2>、加入数据库连接池的jar包:  

c3p0-0.9.1.2.jar
mysql-connector-java-5.1.7-bin.jar

4). 加入其他需要的jar包:

<1>、动态代理需要的jar包:

cglib-2.2.2.jar
javassist-3.17.1-GA.jar
asm-3.3.1.jar

<2>、Spring_MyBatis框架整合jar包

mybatis-spring-1.2.2.jar

<3>、ajax需要的包

jackson-all-1.9.11.jar

<4>、日志需要的jar包

log4j-1.2.17.jar

共需要24个jar包!

5). 在 Spring 的配置文件中配置数据源(Spring.xml已配置).

     <!-- 加载外部属性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />

	<!-- 配置数据库加载内容(c3p0) -->
	<bean id="ComboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
	</bean>

  

6). 在 Spring 的配置文件中配置 SqlSessionFactory(Spring.xml已配置)

     <!-- 配置SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="ComboPooledDataSource"></property>
          <!-- 配置mybatis配置文件的位置和名称 -->
		<property name="configLocation" value="classpath:mytabis-config.xml"></property>
	</bean>

7)在mybatis的全局配置文件中配置settings属性

<configuration>
	<settings>
          <!-- 支持数据库中下划线命名的参数向项目对象中驼峰式命名的属性自动匹配 -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
          <!-- 支持懒加载 -->
          <setting name="lazyLoadingEnabled" value="true"/> </settings> </configuration>
     </settings>
</configuration>

  

8). 最终整合的结果:可以从 IOC 容器中获取 Mapper,然后直接调用 Mapper 的方法。

注意:几乎不直接调用 SqlSession 的任何方法.

需要注意的是:Spring的事务处理的是:runtimeException:而编译时异常是没有处理的,所以需要
自己单独设置RollBackFor=Exception.class
eg:FileInputStream input = new FileInputStream(new File("D:\\2323\23.txt"))

例:简单的对数据库的操作

EmployeeMapper.java:

public interface EmployeeMapper {

	public employee getEmployeeById(int id); 

}

EmployeeMapper.xml:

	<select id="getEmployeeById" parameterType="Integer" resultType="com.neuedu.Bean.employee">
		select id,last_name,email,gender
		from tbl_employee
		where id = #{id}
	</select>

测试类:

public class smTest {

	@Test
	public void test() {
		ApplicationContext ioc =new ClassPathXmlApplicationContext("Spring.xml");
		EmployeeMapper bean = ioc.getBean(EmployeeMapper.class);
		employee employee = bean.getEmployeeById(10);
		System.out.println(employee);
	}
}

输出结果为:

employee [id=10, lastName=hah, gender=1, email=email]

框架整合——Spring与MyBatis框架整合的更多相关文章

  1. Spring+SpringMVC+MyBatis+easyUI整合

    进阶篇 Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API 优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

  3. 《经久不衰的Spring框架:Spring+SpringMVC+MyBatis 整合》

    前言 主角即Spring.SpringMVC.MyBatis,即所谓的SSM框架,大家应该也都有所了解,概念性的东西就不写了,有万能的百度.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目 ...

  4. 搭建Spring + SpringMVC + Mybatis框架之二(整合Spring和Mybatis)

    整合Spring和Mybatis 首先给出完整的项目目录: (1)引入项目需要的jar包 使用http://maven.apache.org作为中央仓库即可. Spring核心包,mybatis核心包 ...

  5. Spring+SpringMvc+Mybatis框架集成搭建教程

    一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...

  6. 关于Spring和mybatis的整合

    Spring同Mybatis的整合 1.引入相应的jar包.(Mybatis的jar包,Spring的jar包,mybatis-spring-1.1.1.jar). 2.编写相应的包(三层的包).搭建 ...

  7. Spring和MyBatis环境整合

    SSH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次. 开篇简介: Spring: Spring是一个轻量级的 ...

  8. Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合

    日常啰嗦 上一篇文章主要讲述了一下syso和Log间的一些区别与比较,重点是在项目的日志功能上,因此,承接前文<Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)Sy ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API

    写在前面的话 看了一下博客目录,距离上次更新这个系列的博文已经有两个多月,并不是因为不想继续写博客,由于中间这段时间更新了几篇其他系列的文章就暂时停止了,如今已经讲述的差不多,也就继续抽时间更新< ...

随机推荐

  1. WinForm 对Web Api 增 册 改 查 的基本操作

    WebApi代码: public class ValuesController : ApiController { Entities db=new Entities(); // GET api/val ...

  2. AOE网的关键路径的计算

    求关键路径,只需理解顶点(事件)和边(活动)各自的两个特征属性以及求法即可: Ø  先根据首结点的Ve(j)=0由前向后(正拓扑序列)计算各顶点的最早发生时间 Ø  再根据终结点的Vl(j)等于它的V ...

  3. 【BZOJ】3930: [CQOI2015]选数

    题意 从区间\([L, R]\)选\(N\)个数(可以重复),问这\(N\)个数的最大公约数是\(K\)的方案数.(\(1 \le N, K \le 10^9, 1 \le L \le R \le 1 ...

  4. fgets函数

    打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #i ...

  5. 【转】sed命令详解

    原文:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为: sed [-nefri]  'command' ...

  6. hdu 3061 Battle 最大权闭合图

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3061 由于小白同学近期习武十分刻苦,很快被晋升为天策军的统帅.而他上任的第一天,就面对了一场极其困难的 ...

  7. Curl的毫秒超时的一个”Bug”

    Curl的毫秒超时的一个”Bug” -- PHP老杨 最近我们的服务在升级php使用的libcurl, 期望新版本的libcurl支持毫秒级的超时, 从而可以更加精细的控制后端的接口超时, 从而提高整 ...

  8. [原]Unity3D深入浅出 - 认识开发环境中的自带的Package资源包

    Character Controller:角色控制器 Glass Refraction(pro only):玻璃反射资源包 Image Effects :图像效果资源包 Light Cookies:光 ...

  9. S2-020 Struts ClassLoader Manipulation安全限制绕过(CVE-2014-0094)

    受影响系统: Apache Group Struts 2.x 描述: ----------------------------------------------------------------- ...

  10. 普通用户从非80端口启动tomcat,通过端口转发监听80端口

    linux下小于1024的端口都需要root去绑定. root权限启动tomcat是不明智的,可以使用非root权限启动tomcat监听8080端口,然后利用端口转发实现对80端口的监听. 端口转发: ...