1. 程式人生 > >Spring與Mybatis的整合流程

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