MyBatis数据持久化(十)与Spring4整合
前面几节介绍了mybatis的基本使用方法,本节主要介绍如何使用mybatis与主流的IoC容器Spring进行整合。
我们首先需要获取Spring框架的jar文件,在写本文时spring的最新Release版本为4.1.7,笔者采用的版本为4.0.0。
下面是Spring各个版本的下载地址列表:
http://repo.springsource.org/libs-release-local/org/springframework/spring/
Spring4.0.0版本下载地址:
http://repo.springsource.org/libs-release-local/org/springframework/spring/4.0.0.RELEASE/spring-framework-4.0.0.RELEASE-dist.zip
下载后解压目录结构如下所示:
我们所需Jar包都存放在lib目录下,这里我们需要將以下几个必须的Jar包拷贝到工程中。
除此之外,我们还需要將下面几个Spring依赖的Jar包也添加到我们的项目中。
要将两者进行整合,我们还需要mybatis官方提供的支持spring的jar包mybatis-spring-1.2.3.jar。
下载地址:http://search.maven.org/#artifactdetails%7Corg.mybatis%7Cmybatis-spring%7C1.2.3%7Cjar
接下来我们將mybatis与Spring进行整合。
1.新建数据库配置文件
新建一个数据库配置属性文件,名称为mysql.properties,内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8
username=root
password=
2.新建Spring配置文件
我们需要新建一个xml文件用于配置bean,名称为beas.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" 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/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 加载数据库配置文件 -->
<context:property-placeholder location="classpath:mysql.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<!-- 创建 SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="SqlMapConfig.xml"/>
</bean>
<!-- 创建SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="userDao" class="com.mybatis.dao.impl.UserDaoImpl">
<property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
</bean>
</beans>
3.新建mybaits配置文件
3.1.新建mybaits配置文件SqlMapConfig.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.mybatis.domain.User"/>
</typeAliases>
<mappers>
<mapper resource="User.xml"/>
</mappers>
</configuration>
由于我们使用Spring来管理数据源,因此前面教程中的mybatis配置文件可以大大简化。
3.2.新建sql配置文件User.xml并增加一条sql配置。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="User">
<insert id="saveUser" parameterType="user">
insert into user(username,password,phone) values(#{username},#{password},#{phone});
</insert>
</mapper>
4.创建DAO类
接下来我们新建一个Dao类,UserDao来对User表进行相关操作。
这里我们采用面向接口的编程方式,先新建一个UserDao接口,com.mybatis.dao.UserDao:
package com.mybatis.dao;
import com.mybatis.domain.User;
public interface UserDao {
void saveUser(User u);
}
然后新建实现类com.mybatis.dao.impl.UserDaoImpl:
package com.mybatis.dao.impl;
import org.mybatis.spring.SqlSessionTemplate;
import com.mybatis.dao.UserDao;
import com.mybatis.domain.User;
public class UserDaoImpl implements UserDao{
private SqlSessionTemplate sqlSessionTemplate;
public SqlSessionTemplate getSqlSessionTemplate() {
return sqlSessionTemplate;
}
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}
@Override
public void saveUser(User u) {
sqlSessionTemplate.insert("User.saveUser", u);
}
}
这里我们通过spring注入了sqlSessionTemplate ,所有的数据操作都通过sqlSessionTemplate 来完成(参见spring配置文件beas.xml)。
5.创建测试用例
新建一个测试类SpringTest,内容如下:
package com.mybatis.exam1;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mybatis.dao.UserDao;
import com.mybatis.domain.User;
public class SpringTest {
@Test
public void testSpring()
{
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserDao userDao = (UserDao)context.getBean("userDao");
User u = new User();
u.setPassword("aaaa");
u.setPhone("8888888");
u.setUsername("Smith");
userDao.saveUser(u);
}
}
打开Outline视图,在testSpring方法上点击右键=>Debug As=>Junit Test,运行成功。
查看数据库,一条新的记录成功插入到数据库中:
博文源码:https://github.com/rongbo-j/mybatis-blog
(请参考exam2工程)
MyBatis数据持久化(十)与Spring4整合的更多相关文章
- MyBatis数据持久化(十一)Mybatis3、Spring4、Struts2整合开发
上一节我们將Mybatis和Spring4进行整合,本节向大家介绍Mybatis在Web开发中的应用,并与主流的MVC框架Struts2进行整合. 我们首先需要获取Struts2框架,Struts2官 ...
- MyBatis数据持久化(七)多表连接查询
本节继续以多表连接查询的案例介绍使用resultMap的好处,对于两张以上的表进行关联查询,当我们有选择的从不同表查询所需字段时,使用resultMap是相当方便的.例如我们有两张表,分别为用户表Us ...
- MyBatis数据持久化(六)resultMap使用
resultMap是MyBatis最强大也是最重要的特性,使用它我们可以將查询结果或者sql输入条件和一个HashMap的key进行映射,大大简化了sql查询条件的输入,而且使得数据的查询变得非常灵活 ...
- MyBatis数据持久化(三)增删改查
上篇文章中我们使用mybatis成功建立数据库会话,并从表中查询出相应的数据,本文在此基础上介绍MyBatis另外几种操作,即插入.修改.删除记录. 1.修改User.xml文件,增加几条sql语句: ...
- MyBatis数据持久化(二)建立数据库会话
上篇文章中介绍了我们使用mybatis前的准备工作,并在程序中通过jdbc与mysql数据库成功建立连接,接下来介绍如何使用mybatis与数据库建立会话.我们需要以下几个步骤: 1.在build p ...
- MyBatis数据持久化(九)动态sql
本文摘自:mybatis参考文档中文版 MyBatis的一个强大的特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能 ...
- MyBatis数据持久化(八)sql复用
在mybatis中,我们可以將sql语句中公共的部分提取出来,然后需要该段sql的地方通过include标签引入即可,这样可以达到sql语句复用的目的. 例如我们有两条相似的查询语句: <sel ...
- MyBatis数据持久化(五)数据源配置优化
在前面的教程中,我们把数据库的驱动.用户名.密码等配置项全部写在 SqlMapConfig.xml中: <dataSource type="POOLED"> <p ...
- MyBatis数据持久化(四)类型别名
Mybatis的类型别名指的是我们可以为Java类型自定义一个简短的名字,以达到简化配置的目的,在上篇博文中我们的sql语句配置文件内容如下: <?xml version="1.0&q ...
随机推荐
- SVD分解.潜语义分析.PythonCode
原文链接:http://www.cnblogs.com/appler/archive/2012/02/02/2335886.html 原始英文链接:http://www.puffinwarellc.c ...
- 杭电1003 Max Sum 【连续子序列求最大和】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...
- 2017/01/07 学习笔记 jar包,maven
① 关于tar,jar,war文件 tar是通用的另一种打包格式,为了部署到服务器时方便. jar是java app server识别的java部署格式,其实是Zip文件,只是内部的文件有规范. wa ...
- Jmeter报内存溢出解决方案
描述:wimdows环境,做上传图片接口测试,涉及图片合成和上传,图片采用base64编码.每1s启动200线程的时候,Jmeter报内存溢出错误. 解决方案: 1.修改jmeter.bat: set ...
- CSS字体代码
宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 新宋体 NSimSun 新细明体 PMingLiU 细明体 Ming ...
- window环境下,提升工作效率
效率工具 windows桌面程序 Listary 本地文件搜索器 有道词典 划词翻译, 并且能够存在生词本里面 印象笔记 浏览资料整理 chrom插件 crxMouse 鼠标手势 chrome vim ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder
http://www.cnblogs.com/wuhuacong/p/3780356.html Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文 ...
- PhotoZoom Classic 7有什么用?高品质的放大模糊图片!
PhotoZoom Classic 7专门用于放大照片,同时保持质量.该软件配备了BenVista独特的S-Spline技术,可轻松超越Photoshop的双三次插值等替代解决方案. PhotoZoo ...
- 阿里云API网关!
API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等阿里云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需 ...
- 【真·干货】MySQL 索引及优化实战
热烈推荐:超多IT资源,尽在798资源网 声明:本文为转载文章,为防止丢失所以做此备份. 本文来自公众号:GitChat精品课 原文地址:https://mp.weixin.qq.com/s/6V7h ...