spring框架的核心是控制反轉和依賴注入,在使用mybatis時,我們可以回想一下,我們使用mybatis的步驟
1.創建配置文件,進行數據源配置(上一篇寫了spring的數據源,同樣都是數據源,那么能不能使用spring的數據源注入到mybatis中呢)
2.使用SqlSessionFactoryBuilder來加載配置文件,獲取SqlSessionFacotory,
(也就是創建SqlSessionFacory,那么我們可以想一下能不能使用spring來創建呢)
3.獲取sqlSession對象(獲取這個對象是為了通過getMapper獲取dao對象,在spring種我們使用自動裝配來注入dao對象,那么我們能讓spring來管理這個對象的創建呢?如果我們自己創建還需要進行事務提交以及關閉SqlSession)
4關閉SqlSession
下面我們就來學習如何使用spring來整合mybatis,
mybatis中提供了一個mybatis-spring.jar來幫助整合,首先導入jar包
然后就可以在spring的配置文件中配置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" 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"> <!--加載配置文件--> <context:property-placeholder location="jdbc.properties"/> <!--配置數據源,這里只進行一個簡單的配置--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <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> <!--為mybatis的sqlSessionFactory注入數據源--> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--注入數據源后,sqlSessionFactory就可以創建sqlSession對象了,然后我們需要配置mapper文件的位置--> <property name="mapperLocations" value="classpath:com/zs/dao/mapper/*.xml"/> </bean> <!--上面配置了mapper文件的位置,我們之前創建dao對象時,使用sqlSession的getMapper(dao.class)來創建對象 那么使用spring來創建對象,spring如何找到dao接口的位置呢?--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.zs.dao"/> </bean> </beans>
創建一個實體類

package com.zs.entity; public class User { private int uid; private String username; private String password; public User() { } public User(int uid, String username, String password) { this.uid = uid; this.username = username; this.password = password; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "uid=" + uid + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
創建dao層接口:
配置上面文件后可以發現這里dao接口前有一個spring管理的標識
mapper文件:
進行測試:
@ContextConfiguration(locations = {"classpath:spring-config.xml"}) @RunWith(SpringJUnit4ClassRunner.class) public class SqlTest { @Autowired private IUserDao userDao; @Test public void fun1() { List<User> users = userDao.allUsers(); System.out.println(users); } }
項目目錄如下: