前面几节介绍了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整合的更多相关文章

  1. MyBatis数据持久化(十一)Mybatis3、Spring4、Struts2整合开发

    上一节我们將Mybatis和Spring4进行整合,本节向大家介绍Mybatis在Web开发中的应用,并与主流的MVC框架Struts2进行整合. 我们首先需要获取Struts2框架,Struts2官 ...

  2. MyBatis数据持久化(七)多表连接查询

    本节继续以多表连接查询的案例介绍使用resultMap的好处,对于两张以上的表进行关联查询,当我们有选择的从不同表查询所需字段时,使用resultMap是相当方便的.例如我们有两张表,分别为用户表Us ...

  3. MyBatis数据持久化(六)resultMap使用

    resultMap是MyBatis最强大也是最重要的特性,使用它我们可以將查询结果或者sql输入条件和一个HashMap的key进行映射,大大简化了sql查询条件的输入,而且使得数据的查询变得非常灵活 ...

  4. MyBatis数据持久化(三)增删改查

    上篇文章中我们使用mybatis成功建立数据库会话,并从表中查询出相应的数据,本文在此基础上介绍MyBatis另外几种操作,即插入.修改.删除记录. 1.修改User.xml文件,增加几条sql语句: ...

  5. MyBatis数据持久化(二)建立数据库会话

    上篇文章中介绍了我们使用mybatis前的准备工作,并在程序中通过jdbc与mysql数据库成功建立连接,接下来介绍如何使用mybatis与数据库建立会话.我们需要以下几个步骤: 1.在build p ...

  6. MyBatis数据持久化(九)动态sql

    本文摘自:mybatis参考文档中文版 MyBatis的一个强大的特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能 ...

  7. MyBatis数据持久化(八)sql复用

    在mybatis中,我们可以將sql语句中公共的部分提取出来,然后需要该段sql的地方通过include标签引入即可,这样可以达到sql语句复用的目的. 例如我们有两条相似的查询语句: <sel ...

  8. MyBatis数据持久化(五)数据源配置优化

    在前面的教程中,我们把数据库的驱动.用户名.密码等配置项全部写在 SqlMapConfig.xml中: <dataSource type="POOLED"> <p ...

  9. MyBatis数据持久化(四)类型别名

    Mybatis的类型别名指的是我们可以为Java类型自定义一个简短的名字,以达到简化配置的目的,在上篇博文中我们的sql语句配置文件内容如下: <?xml version="1.0&q ...

随机推荐

  1. 获取Centos7安装Docker各种姿势(指定版本)(转载)

    Centos7安装docker社区(CE)版 官网指导:https://docs.docker.com/engine/installation/linux/docker-ce/centos/#inst ...

  2. 解决python执行cmd命令出现"XXX不是内部命令"的问题

    由于最近呢,比较得空.无意中浏览到新闻XXX事件(你懂的).后面直接去百度云搜索下载,果然有资源. 怀着迫不及待的心情去打开,解压.我艹,竟然有解压密码.万恶的资本主义啊.作为程序员的我,怎么可能为这 ...

  3. js判断当前移动设备平台

    //js判断当前移动设备平台 var isiOs = false; var isAndroid = false; var isWindowsPhone = false; if(/(iPhone|iPa ...

  4. 运用cat EOF添加文件

    [root@fyc14 nginx1]# cat <<EOF > /etc/yum.repos.d/nginx.repo> [nginx]> name=nginx rep ...

  5. 在 Windows10 系统中安装 Homestead 本地开发环境

    在 windows10 系统中安装 homestead 本地开发环境 在 windows10 环境下安装 homestead 开发环境,网上有很多相关教程其中大多都是 mac 环境,很多大神都是用户的 ...

  6. PHP实现并发请求

    后端服务开发中经常会有并发请求的需求,比如你需要获取10家供应商的带宽数据(每个都提供不同的url),然后返回一个整合后的数据,你会怎么做呢? 在PHP中,最直观的做法foreach遍历urls,并保 ...

  7. Hibernate之HQL基本用法

    关于HQL HQL与SQL非常类似,只不过SQL的操作对象是数据表,列等对象,而HQL操作的是持久化类,实例,属性等. HQL是完全面向对象的查询语言,因此也具有面向对象的继承,多态等特性. 使用HQ ...

  8. java的值传递与引用传递

    一. 经常搞不清楚,当一个对象做为参数传入到方法中时,为啥有时候值能被改变,有时候又不会改变,以下说明原因: 1.当传入的参数,在方法中能被改变的为 引用传递 2.当传入的参数,在方法中没被改变的为 ...

  9. 数据库连接池dataesoruce pool深入理解

    8.数据库连接池的connection都是长连接的,以方便多次调用,多人连续使用.dataSourcePool9.数据库连接池中的连接,是在你用完之后,返回给数据库连接池的,并不是close()掉,而 ...

  10. 【SSH2框架(理论篇)】--SSH2 Vs 经典三层

     这几天一直在学习使用SSH2框架.对于框架本身的使用并非非常困难.相信经过多锻炼就行熟练的掌握框架的使用,让我匪夷所思的是在使用框架的时候感觉非常熟悉,好像在哪里用过似得. 就在某次查看代码的时 ...