Spring与Mybatis的整合流程

Spring与Mybatis的整合

1、什么是Spring和Mybatis整合的原理

Mybatis是一个持久层框架,它将我们平时用的jdbc进行封装,从而进一步地简化代码,不过Mybatis要依赖于数据源,这个数据源可以是mybatis自带的,也可以引入第三方的数据源,第三方常用的数据源有C3P0和Druid连接池。
Spring的作用是管理Bean.
综上所诉:Spring于Mybatis进行整合实质上是将Mybatis的SqlSessionFactoryBean对象进行管理。
上节课讲Spring快速入门的时候,不知道大家有没有注意,我的jdbc全是我自己手写的。而这次带给大家的是整合mybatis,唯一的区别就是:jdbc被mybatis进行封装了。

2、Spring与Mybatis整合的过程

一、 在pom.xml文件中导入相关的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.spring</groupId>
    <artifactId>springmybatisdemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- 单元测试Junti -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <!-- 引入mysql操作类 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>
        <!-- 引入第三方数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.19</version>
        </dependency>
        <!-- 引入mybatis的依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>
        <!-- 引入spring-context-support会自动带入其它的依赖  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 引入Spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 引入mybatis整合spring的依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>

</project>

二、 代码结构
在这里插入图片描述
1、实体类User

package cn.zyyx.domain;

public class User {
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2、Dao层的BaseDao和UserDaoImpl

package cn.springmybatis.dao;

public interface BaseDao<T> {
    T selectOne(Integer id);
}


package cn.springmybatis.dao.impl;

import cn.springmybatis.dao.BaseDao;
import cn.springmybatis.domain.User;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;

@Repository("userDao")
public class UserDaoImpl extends SqlSessionDaoSupport implements BaseDao<User> {
    public User selectOne(Integer id) {
        return getSqlSession().selectOne("users.selectOne",id);
    }
}

三、 在resources资源文件夹下创建Spring的核心配置文件beans.xml,并进行如下配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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-4.3.xsd" default-autowire="byType">

       <!-- 扫描器 -->
        <context:component-scan base-package="cn.springmybatis.dao,cn.springmybatis.service"/>

       <!-- 整合数据源 -->
       <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
           <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
           <property name="username" value="root"/>
           <property name="password" value="wangliuyi520YL"/>
           <property name="maxActive" value="10"/><!-- 最大连接数 -->
           <property name="minIdle" value="2"/><!-- 最小连接数 -->
           <property name="initialSize" value="3"/><!-- 初始化连接数 -->
       </bean>

        <!-- 创建SqlSessionFactoryBean对象,不过创建SqlSessionFactoryBean对象,需要依赖数据源dataSource -->
        <bean id="sf" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="mybatis-config.xml"/>
        </bean>


</beans>

在这里插入图片描述
四、 创建一个测试类进行单元测试
在这里插入图片描述

package cn.zyyx.test;

import cn.springmybatis.service.UserSerivce;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpringMybatis {
    @Test
    public void testSpringMybatis(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        UserSerivce userSerivce = (UserSerivce) ac.getBean("userService");
        System.out.println(userSerivce.selectOne(11));
    }
}


测试结果为
在这里插入图片描述
我的users表
在这里插入图片描述
五、 总结
对比我们之前总结的Spring快速入门里面的内容,我们发现Spring与mybatis的整合,实质上就是Mybatis将JDBC进行了整体的封装让我们更好地使用CRUD。其余的基本上没有什么区别。大家可以尝试一下,也可以将数据源换成C3P0自己配置玩一玩。
六、 代码
链接:https://pan.baidu.com/s/1tX0k8Ptcr4atDdeBDF1rdA
提取码:lpid

猜你喜欢

转载自blog.csdn.net/qq_37630321/article/details/85019951