1. MyBatis-Spring
Spring整合Mybatis需要用到MyBatis-Spring包,MyBatis-Spring会帮助将Mybatis代码无缝整合到Spring中,使用maven在pom.xml引入MyBatis-Spring包:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个SqlSessionFactory 和至少一个数据映射器类。
2 Spring中配置 SqlSessionFactory
在 MyBatis-Spring 中,可使用SqlSessionFactoryBean来创建 SqlSessionFactory。要配置这个工厂 bean,只需要把下面代码放在 Spring 的 XML 配置文件中:
<!--
DataSource:使用spring的数据源替换Mybatis的配置。数据源如:C3P0、dbcp、druid
次数使用spring提供的jdbc
-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatistest?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- sqlSessionFactory配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 绑定Mybatis配置文件 -->
<property name="configuration" value="classpath:mybatis-config.xml"/>
</bean>
<!-- SqlSessionTemplate:就是我们使用的sqlSession -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<!-- 只能使用构造器注入SqlSessionFactory,因为它没有set方法 -->
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
以上.xml文件中,首先创建了DataSource,使用的是Spring带的数据源。
然后配置了SqlSessionFactory对象,在之前Mybatis配置文件中,使用SqlSessionFactoryBuilder 来创建SqlSessionFactory,而在MyBatis-Spring中,则使用 SqlSessionFactoryBean 来创建,该对象需要注入一个数据源datasource,这也是首先配置datasource的原因。
在 MyBatis的使用中,通过 SqlSessionFactory 来创建 SqlSession。一旦获得一个 session 之后,就可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,关闭掉 session就行。在Mybatis-Spring中,使用SqlSessionTemplate 代替SqlSession,如上文xml文件中的配置所示,可以使用 SqlSessionFactory 作为构造方法的参数来创建 SqlSessionTemplate 对象。
3. 为接口添加实现类:
Mybatis原有接口UserMapper及接口映射文件UserMapper.xml如下:
UserMapper:
public interface UserMapper {
public List<User> selectUser();
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wyf.mapper.UserMapper">
<resultMap id="userMap" type="com.wyf.pojo.User">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
</resultMap>
<select id="selectUser" resultMap="userMap">
select * from user
</select>
</mapper>
增加Dao接口的实现类;私有化sqlSessionTemplate
public class UserMapperImpl implements UserMapper {
/**
* qlSessionTemplate类相当于Mybatis中使用的SqlSession,该对象用以操作数据库
*/
private SqlSessionTemplate sqlSession;
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public List<User> selectUser() {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.selectUser();
}
}
将接口实现类注入到Spring中:
<bean id="userMapper" class="com.wyf.mapper.UserMapperImpl">
<property name="sqlSession" ref="sqlSession"/>
</bean>
测试:
public class MyTest {
@Test
public void test() throws IOException {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapperImpl mapper = context.getBean(UserMapperImpl.class);
List<User> userList = mapper.selectUser();
for(User user:userList){
System.out.println(user);
}
}
}
Spring整合Mybatis源码:https://download.csdn.net/download/sssxlxwbwz/85077558