zoukankan      html  css  js  c++  java
  • 框架整合——Spring与MyBatis框架整合

    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:\232323.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]

  • 相关阅读:
    嵌入式Linux c语言常用数据结构
    Project Euler 9
    串口应用开发的步骤
    创建简单的守护进程的编写规则
    Linux进程间通信信号通信
    [转]linux进程间的通信手段
    守护进程实例
    Linux slab 分配器剖析了解 Linux 内存管理的方式(转)
    嵌入式Linux c语言常用数据结构2
    嵌入式程序员应知道的几个题目(重要)
  • 原文地址:https://www.cnblogs.com/Mr-zhaoz/p/7481870.html
Copyright © 2011-2022 走看看