本文共 5672 字,大约阅读时间需要 18 分钟。
MyBatis的实现步骤:
mybatis-spring这个包会帮助我们将MyBatis代码无缝地整合到Spring中。
在开始使用MyBatis-Sprring之前,你需要先熟悉Spring和MyBatis这两个框架和有关它们的术语。MyBatis-Spring需要以下版本
MyBatis-Spring | MyBatis | Spring 框架 | Spring Batch | Java |
---|---|---|---|---|
2.0 | 3.5+ | 5.0+ | 4.0+ | Java 8+ |
1.3 | 3.4+ | 3.2.2+ | 2.1+ | Java 6+ |
导入版本对应的jar包
org.mybatis mybatis-spring 1.3.2
要在Spring中使用MyBatis,需要在Spring应用上下文中定义两个东西:
在 MyBatis-Spring 中,可以使用SqlSessionFactoryBean来创建SqlSessionFactory。
要配置这个工厂bean,只需要将以下代码放在Spring的xml配置文件中:注意:
SqlSessionFactory需要一个 DataSource(数据源)。这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。
在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory的。 而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。
除了dataSource属性还有一个mapperLocations属性,这个属性接受多个资源位置,可以用来指定 MyBatis 的映射器 XML 配置文件的位置。
这个配置文件并不是一个完整的MyBatis配置。确切地说,任何环境配置(environments),数据源(DataSource)和MyBatis的事务管理(transactionManager)都会被忽略。
SqlSessionFactoryBean会创建它自有的 MyBatis 环境配置(Environment),并按要求设置自定义环境的值。
在MyBatis中,你可以使用SqlSessionFactory来创建sqlSession。一旦获得一个session之后,就可以使用它来执行影射了的语句,提交或者回滚等。最后当不再需要它的时候,就可以关闭session。使用MyBatyis-Spring之后,就不再需要直接使用SqlSessionFactory了,因为bean可以被注入到一个线程安全的SqlSession,他能基于Spring的事务配置来自动提交、回滚、关闭session
作为SqlSession的一个实现,意味着可以使用它无缝代替代码中已经在使用的SqlSession。SqlSessionTemplate是线程安全的,可以被多个DAO或映射器所共享使用的。
可以使用SqlSessionFactory作为构造方法的参数创建SqlSessionTemplate对象。(因为没有对用的set方法所以使用构造)
pom.xml
4.0.0 com.muhan mybatis-spring 1.0-SNAPSHOT junit junit 4.11 org.mybatis mybatis 3.5.1 mysql mysql-connector-java 5.1.47 log4j log4j 1.2.17 org.mybatis mybatis-spring 2.0.2 org.springframework spring-webmvc 4.3.9.RELEASE org.springframework spring-jdbc 4.3.9.RELEASE org.aspectj aspectjweaver 1.8.3 src/main/java **/*.properties **/*.xml false src/main/resources **/*.properties **/*.xml false
dao接口
package com.muhan.dao;import com.muhan.pojo.User;import java.util.List;public interface UserDao { ListgetUserList();}
接口映射文件userMapper.xml
数据源配置:
sqlSessionFactory配置
sqlSession配置
编写接口实现类
package com.muhan.dao;import com.muhan.pojo.User;import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserDaoImpl implements UserDao { //将sqlSession组合进接口实现类 private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public ListgetUserList() { UserDao mapper = sqlSession.getMapper(UserDao.class); List users = mapper.getUserList(); return users; }}
将接口的实现类交给spring管理
import com.muhan.dao.UserDao;import com.muhan.pojo.User;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class SpringMyBatis { @Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml"); UserDao userDaoImpl = (UserDao) context.getBean("userDaoImpl"); Listusers = userDaoImpl.getUserList(); for (User user : users) { System.out.println(user); } }}
结果展示:
转载地址:http://hoiwi.baihongyu.com/