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:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  9. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
  11.  
  12. <!-- 扫描包 -->
  13. <context:component-scan base-package="com.neuedu">
  14. <context:exclude-filter type="annotation"
  15. expression="org.springframework.stereotype.Controller" />
  16. <!-- 处理全局异常,可以标记在类上 -->
  17. <context:exclude-filter type="annotation"
  18. expression="org.springframework.web.bind.annotation.ControllerAdvice" />
  19. </context:component-scan>
  20.  
  21. <!-- 加载外部属性文件(数据库驱动) -->
  22. <context:property-placeholder location="classpath:jdbc.properties" />
  23.  
  24. <!-- 配置数据库加载内容(c3p0) -->
  25. <bean id="ComboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  26. <property name="user" value="${jdbc.user}"></property>
  27. <property name="password" value="${jdbc.password}"></property>
  28. <property name="driverClass" value="${jdbc.driver}"></property>
  29. <property name="jdbcUrl" value="${jdbc.url}"></property>
  30. </bean>
  31.  
  32.      <!-- 对于 mybatis 而言,使用的事务管理器是 DataSourceTransactionManager -->
  33.      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  34.          <property name="dataSource" ref="ComboPooledDataSource" />
  35.      </bean>
  36.  
  37.      <tx:annotation-driven />
  38.  
  39. <!-- 配置SqlSessionFactory -->
  40. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  41. <property name="dataSource" ref="ComboPooledDataSource"></property>
  42.           <!-- 配置mybatis配置文件的位置和名称 -->
  43. <property name="configLocation" value="classpath:mytabis-config.xml"></property>
  44. </bean>
  45. <!-- 扫描接口和sql配置文件 -->
  46. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  47. <property name="basePackage" value="com.neuedu.mapper"></property>
  48. </bean>
  49. </beans>

  

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

<1>、mybatis需要的jar包:

mybatis-3.2.8.jar

<2>、mybatis的配置文件mytabis-config.xml:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!-- 总控配置文件 -->
  6. <configuration>
  7. <settings>
  8.           <!-- 支持数据库中下划线命名的参数向项目对象中驼峰式命名的属性自动匹配 -->
  9. <setting name="mapUnderscoreToCamelCase" value="true" />
  10.           <!-- 支持懒加载 -->
  11.           <setting name="lazyLoadingEnabled" value="true"/> </settings> </configuration>
  12.      </settings>
  13. </configuration>

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

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

  1. jdbc.user=root
  2. jdbc.password=123456
  3. jdbc.url=jdbc:mysql://localhost:3306/mytabis
  4. 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已配置).

  1.      <!-- 加载外部属性文件 -->
  2. <context:property-placeholder location="classpath:jdbc.properties" />
  3.  
  4. <!-- 配置数据库加载内容(c3p0) -->
  5. <bean id="ComboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  6. <property name="user" value="${jdbc.user}"></property>
  7. <property name="password" value="${jdbc.password}"></property>
  8. <property name="driverClass" value="${jdbc.driver}"></property>
  9. <property name="jdbcUrl" value="${jdbc.url}"></property>
  10. </bean>

  

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

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

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

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

  

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

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

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

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

EmployeeMapper.java:

  1. public interface EmployeeMapper {
  2.  
  3. public employee getEmployeeById(int id);
  4.  
  5. }

EmployeeMapper.xml:

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

测试类:

  1. public class smTest {
  2.  
  3. @Test
  4. public void test() {
  5. ApplicationContext ioc =new ClassPathXmlApplicationContext("Spring.xml");
  6. EmployeeMapper bean = ioc.getBean(EmployeeMapper.class);
  7. employee employee = bean.getEmployeeById(10);
  8. System.out.println(employee);
  9. }

输出结果为:

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

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

  1. OSGI企业应用开发(九)整合Spring和Mybatis框架(二)

    上篇文章中,我们完成了在OSGI应用中整合Spring和Mybatis框架的准备工作,本节我们继续Spring和Mybatis框架的整合. 一.解决OSGI整合Spring中的Placeholder问 ...

  2. OSGI企业应用开发(八)整合Spring和Mybatis框架(一)

    到目前为止,我们已经学习了如何使用Blueprint將Spring框架整合到OSGI应用中,并学习了Blueprint&Gemini Blueprint的一些使用细节.本篇文章开始,我们將My ...

  3. OSGI企业应用开发(十)整合Spring和Mybatis框架(三)

    上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...

  4. ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查

    三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...

  5. Spring+SpringMVC+MyBatis+easyUI整合

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

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

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

  7. java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)

    首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...

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

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

  9. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...

随机推荐

  1. Java之集合初探(一)

    一.集合概述.区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器. 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的 ...

  2. (转)JAVA堆栈操作

    java.util.Queue用法(是util中的一个接口) 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行 ...

  3. 学习笔记TF034:实现Word2Vec

    卷积神经网络发展趋势.Perceptron(感知机),1957年,Frank Resenblatt提出,始祖.Neocognitron(神经认知机),多层级神经网络,日本科学家Kunihiko fuk ...

  4. 程序员面试必备-链表各种操作及其实现方法(c实现)

    链表是一种最简单的数据结构之一,经常会被面试官用来考察应聘者的基础扎不扎实,最近也到了求职季,所以我把自己对链表的一些理解写出来,希望能跟大家交流交流: 链表的概念其实挺简单,无非就是一个利用指针将数 ...

  5. 7.spark共享变量

    spark共享变量 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹性分布式数据集 ...

  6. 蓝桥杯比赛javaB组练习《四平方和》

    四平方和 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和.如果把0包括进去,就正好可以表示为4个数的平方和. 比如:5 = 0^2 + 0^2 + 1^2 + 2^27 ...

  7. Redis-rdb持久化

    Redis实现快照的过程 redis调用fork,现在有了子进程和父进程 父进程继续处理client请求,子进程负责将内存内容写入到临时文. 由于os的写时复制机制(copy on write)父子进 ...

  8. C++标准库string

    C++标准库string 定义和初始化 string s1 默认初始化,s1是一个空串 string s2(s1) s2是s1的副本 string s2 = s1 等价于s2(s1),s2是s1的副本 ...

  9. CocoaPods的一些略为高级一丁点的使用【转】

    记得我刚开始做iOS开发的时候,是没有项目依赖管理工具.当需要引入第三方库的时候是相当麻烦的,不是直接拷贝库近来,就是添加依赖工程,直到CocoaPods出来才改变这个状况.项目依赖管理不是Cocoa ...

  10. POJ--1088--dp--滑雪

    #include<iostream> using namespace std; ; }; }; int dp(int,int); int row,col; int main() { whi ...