mybatis系统学习(三)——使用spring+mybatis实现简单操作

说明

根据学习计划,之前学了纯粹的mybatis如何简单地操作mysql数据库。但是实际上我并不知道这种做法应用的如何,因为在我以往的项目中并没有这种做法,几乎清一色的都是spring+mybatis。
因此,我决定这第三篇就先入手一下spring和mybatis的整合。

依赖

既然是spring+mybatis,自然是spring和mybatis的相关包都需要导入,maven的配置如下:

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.14.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.3.14.RELEASE</version>
    </dependency>

上边配置需要特别说明的是,spring-context是为了在spring配置文件中引入config.properties文件;spring-jdbc主要是为了配置数据源;而mybatis-spring很显然就是spring整合mybatis的主要依赖;另外两个是使用mybatis的基础依赖,在上一篇已经有过出现。

整合

使用spring整合mybatis,除了mybatis的基础之外,自然也需要spring的基础知识,通常在使用spring的过程中,都有一个入口文件,一般叫做application.xml或者spring.xml。
在我们这里整合mybatis的时候,就需要如下基本的配置:

<?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:jdbc="http://www.springframework.org/schema/jdbc"
    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/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
    <context:property-placeholder location="classpath:config.properties"/>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis.xml" />
    </bean>
    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="study.tuzongxun.mapper.UserMapper" />
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>
</beans>

上边配置的说明如下:
首先,这个文件有一个代表xml文件的文件头,这里不多说;
然后就是spring配置文件的文件头,也就是beans里的内容,其实可以理解为java代码导包;就像在java类中需要用到其他类的功能需要先导包一样,这里也是只有有了相应的引入之后,才能在之后使用某些特定的功能;
就例如接下来使用context:property-placeholder来引入config.properties文件一样,只有在上边文件头中有了spring-context的配置,才能够使用这个功能;
引入配置文件之后就是对于数据源的配置,这里需要指定一个具体处理类,也正是因为这样,所以才引入了spring-jdbc;不过,一般在正是项目中可能就会使用连接池相应的处理类;
在数据源的配置之后,声明了一个SqlSessionFactoryBean,上一篇其实有说过,SqlSessionFactoryBean是mybatis的关键;在这个SqlSessionFactoryBean中有一个必须指定的参数,就是dataSource,所以必须在这之前有dataSource的配置,无论是放在其他文件,在这段之前引入,还是如上边例子一样,在这个文件中声明;至于里边的mybatis.xml,从功能角度来说不是必要的,但是实际项目中可能一般都会要,因为里边会有更多详细的与性能等相关配置,例如打印mybatis日志的配置;
那么最后边还有一个bean,依赖于sqlSessionFactory,这是一个数据映射bean,指定了操作数据库的接口;但是需要注意的是,这个地方的实现并不唯一,还有其他的实现方式,待后续再说。

mybatis配置

就像上边所说的,一般都会用一个专门的mybatis的配置,上边的例子中其实就配了个日志,如下:

<?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>
    <!-- 控制台打印sql等日志 -->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

java代码

上边所有的都是配置,既然还有接口和实体类,自然就有java代码,不过在当前的例子中,使用的还是上一篇一样的代码,只是改了配置,因此就不再罗列,可参考之前所写:
https://blog.csdn.net/tuzongxun/article/details/80097321

测试

为了证明上边的配置和原本纯mybatis的使用具有同等效果,需要一个测试类运行一下测试结果,这个类代码如下:

package study.tuzongxun.test;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import study.tuzongxun.mapper.UserMapper;
import study.tuzongxun.model.UserModel;
/**
 * 测试
 * @author 涂宗勋
 * @date 2018年5月8日
 */
public class SpringTest {
   public static void main(String[] args) {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
    UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
    List list = userMapper.findUsers();
    for (UserModel user : list) {
        System.out.println(user);
    }
   }
}

项目参考地址:
https://github.com/tuzongxun/mybatis-study

猜你喜欢

转载自blog.csdn.net/tuzongxun/article/details/80243244