Spring與Mybatis的整合流程
阿新 • • 發佈:2018-12-17
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