好程序員Java學習路線分享MyBatis之Spring整合,Spring、SpringMVC和MyBatis是目前企業開發的三大框架。本章咱們將學習將Spring和MyBatis整合到一塊兒,成爲咱們項目開發的技術骨架。
引入依賴
首先咱們須要在Maven項目中添加依賴,Spring框架和MyBatis框架須要的依賴有:
mybatis MyBatis
mybatis-spring MyBatis的Spring兼容包,用於整合MyBatis
spring-jdbc Spring的JDBC包,配置數據源時須要
spring-test Spring單元測試
spring-context Spring上下文,提供IOC和AOP服務
Junit 單元測試框架
mysql-connector-java MySQL數據庫驅動
c3p0 鏈接池
添加配置文件
首先咱們用properties文件配置JDBC的參數:
示例代碼:jdbc.properties
1.driver=com.mysql.cj.jdbc.Driver
2.url=jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false
3.user=root
4.password=123456java
接下來在Spring配置文件中整合MyBatis
1.<!--1 引入屬性文件,在配置中佔位使用 -->
2.<context:property-placeholder location="classpath:jdbc.properties" />
3.<!--2 配置C3P0數據源 -->
4.<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
5.<!--驅動類名 -->
6.<property name="driverClass" value="${driver}" />
7.<!-- url -->
8.<property name="jdbcUrl" value="${url}" />
9.<!-- 用戶名 -->
10.<property name="user" value="${user}" />
11.<!-- 密碼 -->
12.<property name="password" value="${password}" />
13.<!-- 當鏈接池中的鏈接耗盡的時候c3p0一次同時獲取的鏈接數 -->
14.<property name="acquireIncrement" value="5"></property>
15.<!-- 初始鏈接池大小 -->
16.<property name="initialPoolSize" value="10"></property>
17.<!-- 鏈接池中鏈接最小個數 -->
18.<property name="minPoolSize" value="5"></property>
19.<!-- 鏈接池中鏈接最大個數 -->
20.<property name="maxPoolSize" value="20"></property>
21.</bean>
22.<!--3 配置MyBatis會話工廠bean -->
23.<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
24.<!-- 數據源 -->
25.<property name="dataSource" ref="datasource"/>
26.<!-- 別名 -->
27.<property name="typeAliasesPackage" value="com.qianfeng.mybatis.entity"/>
28.<!-- sql映射文件路徑 -->
29.<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>
30.</bean>
31.<!--4 自動掃描對象關係映射 -->
32.<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
33.<!--指定會話工廠,若是當前上下文中只定義了一個則該屬性可省去 -->
34.<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
35.<!-- 指定要自動掃描接口的基礎包,實現接口 -->
36.<property name="basePackage" value="com.qianfeng.mybatis.dao"/>
37.</bean>
38.<!--5 容器自動掃描IOC組件 -->
39.<context:component-scan base-package="com.qianfeng.mybatis"/>
編寫Mapper接口
以一個基本的查詢功能爲例
代碼示例:
1./**mysql
4.public interface UserDAO {程序員
9.}spring
編寫Mapper 映射文件
編寫Mapper接口的映射,實現查詢功能
代碼示例:
1.<?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE mappersql
5.<!--mapper是映射,namespace是設置對應的DAO接口-->
6.<mapper namespace="com.qianfeng.ssm.dao.UserDAO">數據庫
24.</mapper>安全
Spring整合JUnit進行單元測試
使用Spring整合JUnit,測試Mapper接口是否能用SpringIOC實現注入:
代碼示例
1.@ContextConfiguration(locations = "classpath:applicationContext.xml")
2.@RunWith(SpringJUnit4ClassRunner.class)
3.public class TestDAO {
4.mybatis
7.app
13.}框架
總結使用Spring整合MyBatis後,可以利用Spring強大的IOC機制,將Mapper接口的代理對象注入進來,從而避免了手動建立SqlSessionFactory和SqlSession對象的麻煩,同時Spring對SqlSession的訪問方式進行了優化,解決了SQLSession的線程安全問題。