博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring~使用Mybatis-Spring包将MyBatis与Spring整合(俩种方式实现), 解决静态资源不导入问题
阅读量:4051 次
发布时间:2019-05-25

本文共 4660 字,大约阅读时间需要 15 分钟。

文章目录

什么是 MyBatis-Spring?

  • MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

知识基础

  • 在开始使用 MyBatis-Spring 之前,你需要先熟悉 Spring 和 MyBatis 这两个框架和有关它们的术语。这很重要——因为本手册中不会提供二者的基本内容,安装和配置教程。

MyBatis-Spring 需要以下版本:

在这里插入图片描述

使用 SqlSession

  • 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,你可以关闭 session。使用 MyBatis-Spring 之后,你不再需要直接使用 SqlSessionFactory 了,因为你的 bean 可以被注入一个线程安全的 SqlSession,它能基于 Spring 的事务配置来自动提交、回滚、关闭 session。

SqlSessionTemplate

  • SqlSessionTemplate 是 MyBatis-Spring 的核心。作为 SqlSession 的一个实现,这意味着可以使用它无缝代替你代码中已经在使用的 SqlSession。SqlSessionTemplate 是线程安全的,可以被多个 DAO 或映射器所共享使用。
  • 由于模板可以参与到 Spring 的事务管理中,并且由于其是线程安全的,可以供多个映射器类使用,你应该总是用 SqlSessionTemplate 来替换 MyBatis 默认的 DefaultSqlSession 实现。在同一应用程序中的不同类之间混杂使用可能会引起数据一致性的问题。
  • 可以使用 SqlSessionFactory 作为构造方法的参数来创建 SqlSessionTemplate 对象。

方式一

  1. 导入依赖
junit
junit
4.11
test
mysql
mysql-connector-java
5.1.49
org.mybatis
mybatis
3.5.3
org.springframework
spring-webmvc
5.1.4.RELEASE
org.springframework
spring-jdbc
5.1.4.RELEASE
org.aspectj
aspectjweaver
1.9.4
org.mybatis
mybatis-spring
2.0.1
org.projectlombok
lombok
1.16.20
provided
  1. 编写数据源配置
  2. 注册SQLSessionFactory
  3. 注册SQLSessionTemplate (作为SQLSession的一个实现)
  1. 注册一个实现类,(为去获取SQLSession)
package mybatis.mapper;import mybatis.model.User;import org.apache.ibatis.session.SqlSession;import org.mybatis.spring.SqlSessionTemplate;import java.util.List;/** * Created with IntelliJ IDEA. * Description: If you don't work hard, you will be a loser. * User: Listen-Y. * Date: 2020-10-25 * Time: 15:57 */public class UserMapperImpl implements UserMapper {
private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession; } @Override public List
selectUser() {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); return userMapper.selectUser(); }}
  1. 测试
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); UserMapper userMapper = context.getBean("userMapper", UserMapper.class); System.out.println(userMapper.selectUser()); }

在这里插入图片描述

方式二

  • SqlSessionDaoSupport
    SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用 getSqlSession() 方法你会得到一个 SqlSessionTemplate
  1. 编写实体类
package mybatis.mapper;import mybatis.model.User;import org.mybatis.spring.support.SqlSessionDaoSupport;import java.util.List;/** * Created with IntelliJ IDEA. * Description: If you don't work hard, you will be a loser. * User: Listen-Y. * Date: 2020-10-25 * Time: 16:57 */public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
@Override public List
selectUser() {
return getSqlSession().getMapper(UserMapper.class).selectUser(); }}
  1. 注册bean
  1. 测试
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); UserMapper userMapper = context.getBean("userMapper2", UserMapper.class); System.out.println(userMapper.selectUser()); }

在这里插入图片描述

使用MyBatis-Spring包可以实现Spring与MyBatis的整合, 这样就直接使用Spring就可以搞定MyBatis的配置,实现简便配置简单,而且使用的SQLSession还是线程安全的.

解决静态资源不导入问题

在pom.xml文件中的build标签中加入

src/main/java
**/*.properties
**/*.xml
false

转载地址:http://qjsci.baihongyu.com/

你可能感兴趣的文章
在unity中建立最小的shader(Minimal Shader)
查看>>
1.3 Debugging of Shaders (调试着色器)
查看>>
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
查看>>
vsftp 配置具有匿名登录也有系统用户登录,系统用户有管理权限,匿名只有下载权限。
查看>>
linux安装usb wifi接收器
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
关于对象赋值及返回临时对象过程中的构造与析构
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>