框架整合——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:\\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框架整合的更多相关文章
- OSGI企业应用开发(九)整合Spring和Mybatis框架(二)
上篇文章中,我们完成了在OSGI应用中整合Spring和Mybatis框架的准备工作,本节我们继续Spring和Mybatis框架的整合. 一.解决OSGI整合Spring中的Placeholder问 ...
- OSGI企业应用开发(八)整合Spring和Mybatis框架(一)
到目前为止,我们已经学习了如何使用Blueprint將Spring框架整合到OSGI应用中,并学习了Blueprint&Gemini Blueprint的一些使用细节.本篇文章开始,我们將My ...
- OSGI企业应用开发(十)整合Spring和Mybatis框架(三)
上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...
- ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查
三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...
- Spring+SpringMVC+MyBatis+easyUI整合
进阶篇 Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API 优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇
优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...
- java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)
首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...
- 《经久不衰的Spring框架:Spring+SpringMVC+MyBatis 整合》
前言 主角即Spring.SpringMVC.MyBatis,即所谓的SSM框架,大家应该也都有所了解,概念性的东西就不写了,有万能的百度.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目 ...
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...
随机推荐
- (转).tar.gz文件和.rpm文件的区别
场景:在Linux环境下安装软件时候总是会遇到安装软件格式的选择,以及安装. 1 软件的二进制分发 Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式, 其优点是安装使用容易,缺 ...
- Android保存图片到本地相册
好久没有写东西了.备份下知识吧.免得忘记了 . 首先贴一段代码 -- 这个是先生成一个本地的路径,将图片保存到这个文件中,然后扫描下sd卡.让系统相册重新加载下 .缺点就是只能保存到DCIM的文 件 ...
- ASP.NET Core 源码学习之 Logging[3]:Logger
上一章,我们介绍了日志的配置,在熟悉了配置之后,自然是要了解一下在应用程序中如何使用,而本章则从最基本的使用开始,逐步去了解去源码. LoggerFactory 我们可以在构造函数中注入 ILogge ...
- node 内存管理相关
为什么在node中要担心node内存管理 使用JavaScript进行前端开发时几乎完全不需要关心内存管理问题,对于前端编程来说,V8限制的内存几乎不会出现用完的情况,v8在node中有着内存的限制( ...
- 看完给跪了:技术大牛总结的Github与华为软件开发云完整对比
华为软件开发云配置管理 服务和Github是国内外比较有代表性的代码托管平台,它们以git作为版本管理工具,使项目中身处各地的人员可以协同工作,主要操作涉及仓库.分支.提交.pull request等 ...
- Java restful web service 开发入门
可用的框架有不少,我用的是jersey. 直接上代码,其实,如果你会web service 这个restful的就很好理解了,自己跑一遍就OK了 用到的类 User.java package demo ...
- mybatis 详解(七)------一对一、一对多、多对多
前面几篇博客我们用mybatis能对单表进行增删改查操作了,也能用动态SQL书写比较复杂的sql语句.但是在实际开发中,我们做项目不可能只是单表操作,往往会涉及到多张表之间的关联操作.那么我们如何用 ...
- akoj-1073- Let the Balloon Rise
Let the Balloon Rise Time Limit:1000MS Memory Limit:65536K Total Submit:92 Accepted:58 Description ...
- js存款计算器原生小demo
大家好,本人是初入前端的一枚程序猿,深知js底层开发的重要性,这也是我的软肋所在(曾经以为),渐渐的明白了一个道理,饭要一口口吃,路要一步步走,这也是我想告诉给所有刚刚进入IT行业的技术员们,沉下心, ...
- 【LeetCode】数组-1(643)-返回规定长度k的最大子数组的平均数
好久没有刷LeetCode了,准备重拾并坚持下去,每天刷个两小时.今天算是开始的第一天,不过出师不利,在一道很简单的题目上墨迹半天.不过还好,现在踩过的坑,应该都不会白踩,这些可能都是以后程序员路上稳 ...