【Spring】学习笔记10-整合MyBatis
2022/6/26 23:22:35
本文主要是介绍【Spring】学习笔记10-整合MyBatis,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MYBatis中文网
1.需要的相关maven依赖
1 <dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4 <version>5.1.46</version> 5 </dependency> 6 <dependency> 7 <groupId>org.mybatis</groupId> 8 <artifactId>mybatis</artifactId> 9 <version>3.5.2</version> 10 </dependency> 11 <!-- Spring操作数据库的话,还需要Spring-JDBC这个包--> 12 <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 13 <dependency> 14 <groupId>org.springframework</groupId> 15 <artifactId>spring-jdbc</artifactId> 16 <version>5.3.21</version> 17 </dependency> 18 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> 19 <dependency> 20 <groupId>org.mybatis</groupId> 21 <artifactId>mybatis-spring</artifactId> 22 <version>2.0.4</version> 23 </dependency> 24 <dependency> 25 <groupId>org.aspectj</groupId> 26 <artifactId>aspectjweaver</artifactId> 27 <version>1.9.4</version> 28 <scope>provided</scope> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-web</artifactId> 33 <version>5.2.0.RELEASE</version> 34 </dependency>
2.什么是MyBatis-Spring?
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 Mapper 和 SqlSession 并注入到 Bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis。
3.Spring整合MyBatis步骤
3.1编写数据源配置
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="username" value="root"/> <property name="password" value="WGYwgy@981019"/> <property name="url" value="jdbc:mysql://localhost/mysql"/> </bean>
3.2SqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource"/> <property name="configLocation" value="classpath:Mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/wang/mapper/*.xml"/> <!-- property:mapperLocations取代了Mybatis-config.xml文件中mappers的配置, 配置了该属性后,需注释掉MyBatis-config.xml中的mappers标签元素即可 此时MyBatis-config.xml只需配置<settings>,<typeAliases> --> </bean>
3.3SqlSessionTemplate
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
SqlSessionTemplate相对于SqlSession的优点
SqlSessionTemplate
是 MyBatis-Spring 的核心。作为 SqlSession
的一个实现,这意味着可以使用它无缝代替你代码中已经在使用的 SqlSession
。 SqlSessionTemplate
是线程安全的,可以被多个 DAO 或映射器所共享使用。
当调用 SQL 方法时(包括由 getMapper()
方法返回的映射器中的方法),SqlSessionTemplate
将会保证使用的 SqlSession
与当前 Spring 的事务相关。 此外,它管理 session 的生命周期,包含必要的关闭、提交或回滚操作。另外,它也负责将 MyBatis 的异常翻译成 Spring 中的 DataAccessExceptions
。
由于模板可以参与到 Spring 的事务管理中,并且由于其是线程安全的,可以供多个映射器类使用,你应该总是用 SqlSessionTemplate
来替换 MyBatis 默认的 DefaultSqlSession
实现。在同一应用程序中的不同类之间混杂使用可能会引起数据一致性的问题。
3.4需要给Mapper接口添加实现类,并将实现类注入到Spring中
UserMapper接口实现类
package com.wang.mapper; import com.wang.pojo.User; import org.mybatis.spring.SqlSessionTemplate; import java.util.List; public class UserMapperImpl implements UserMapper{ //wo men suo you cao zuo dou shi yong SqlSessionTemplate private final SqlSessionTemplate template; public UserMapperImpl(SqlSessionTemplate template) { this.template = template; } @Override public List<User> selectUser() { System.out.println("UserMapperImpl"); return template.getMapper(UserMapper.class).selectUser(); } }
注入Spring中
<bean id="userMapperImpl" class="com.wang.mapper.UserMapperImpl"> <constructor-arg index="0" ref="sqlSessionTemplate"/> </bean>
3.5单元测试
@Test public void test04(){ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); UserMapper mapperImpl = context.getBean("userMapperImpl", UserMapper.class); mapperImpl.selectUser().forEach(System.out::println); } //测试结果:
User(id=2, name=??, pwd=333333)
User(id=3, name=小花, pwd=123456)
User(id=4, name=小微, pwd=111111)
User(id=5, name=小微, pwd=123456)
User(id=11, name=小军, pwd=123456)
User(id=13, name=??, pwd=123456)
这篇关于【Spring】学习笔记10-整合MyBatis的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略