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); } }
项目目录如下: