前面几节介绍了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工程)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐