SqlSessionTemplate详解——Mybatis+Spring Boot整合

SqlSessionTemplate详解——Mybatis+Spring Boot整合Mybatis+SpringBoot整合——SqlSessionTemplate简介通俗地讲,SqlSessionTemplate是Mybatis—Spring的核心,是用来代替默认Mybatis实现的DefaultSqlSessionFactory,也可以说是DefaultSqlSessionFactory的优化版,主要负责管理Mybatis的SqlSession,调用Mybatis的sq…

大家好,又见面了,我是你们的朋友全栈君。

SqlSessionTemplate简介

通俗地讲,SqlSessionTemplate是Mybatis—Spring的核心,是用来代替默认Mybatis实现的DefaultSqlSessionFactory,也可以说是DefaultSqlSessionFactory的优化版,主要负责管理Mybatis的SqlSession,调用Mybatis的sql方法,SqlSessionTemplate是线程安全的,通过TransactionSynchronizationManager中的ThreadLocal保存线程对应的SqlSession,可以被多个Dao共享使用。

主要类变量

字段 类型 描述
sqlSessionFactory SqlSessionFactory SqlSession工厂
executorType ExecutorType Executor的类型:SIMPLE, REUSE, BATCH
sqlSessionProxy SqlSession SqlSession代理对象,注册了SqlSessionInterceptor反射处理器,实际上的方法调用都是通过SqlSessionInterceptor反射实现的。
exceptionTranslator PersistenceExceptionTranslator Spring提供的接口,用于处理持久化框架的异常

源码解析(内容枯燥,无兴趣可以直接跳过看实现方式!)

  • 从下面图片中可以看出,SqlSessionTemplate实现了SqlSession接口和DisposableBean接口,SqlSession这个不用多说,是用来实现对数据库的CURD操作的,相当于JDBC的Connection对象。
    直接输入1次#,并按下space后,将生成1级标题。输入2次#,并按下space后,将生成2级标题。以此类推,我们支持6级标题。有助于使用语法后生成一个完美的目录。

  • 另一个就是DisposableBean接口了,这个接口就有点意思了,首先声明一点,SqlSessionTemplate是Mybatis为了接入Spring提供的Bean,既然是Bean那肯定会执行初始化操作,Spring为初始化Bean提供了两种方式,一种是实现InitializingBean接口重写里面的afterPropertiesSet方法,第二种是配置文件中通过init-method指定afterPropertiesSet方法,两种方法都能完成Bean的初始化操作,那DisposableBean接口又是干嘛的呢,看下图,该接口只有一个方法,根据方法的名字,应该能猜出一些了,是在Bean完成初始化之后,对象销毁的时候用的,跟初始化Bean对应的,销毁对象也有两种方法,第一就是调用DisposableBean中的destroy方法,第二种就是在配置文件中的destroy-method,这个配置跟init-method相对应,在调用销毁的时候先调用DisposableBean的destroy方法,后执行destroy-method指定的方法。
    在这里插入图片描述

SqlSessionTemplate实现方式

  • 一般SpringBoot项目在创建的时候都可以选择Mybatis的依赖,如果没有下面代码可直接复制。
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

  • Mybatis里面有提供SqlSessionTemplate,由于SpringBoot都是用的注解的方式注入,所以没有Spring-Mybatis.xml也就不需要配置,用Autowired直接自动注入即可。
    在这里插入图片描述
  • 看一下SqlSessionTemplate支持的方法,数据库的CURD四大操作都有,可以直接使用。
    在这里插入图片描述
  • 下面是代码,字符串str的值是Mapper文件namespace的值和id,obj则是传入的参数,用的Object比较方便。
/** * *查找对象 * @author XWJ * @return UserInfo * @class DaoImpl * @model findTheObject * @param str * @param ob * @return */
	public UserInfo findTheObject(String str,Object ob){ 
   
		return sqlSessionTemplate.selectOne(str, ob);
	}
	
	
  • 再下面则是Service调用
import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.xb.dao.DaoImpl;
import com.xb.util.EndData;

/** * @author XWJ *2019年10月10日 */
@Repository
public class TestService2 { 
   

	@Resource(name="daoImpl")
	private DaoImpl dao;
	
	
	public UserInfo getUserInfo(String id) throws Exception { 
   
		return (UserInfo)dao.findTheObject("TestMapper.getUserInfo", id);
		}
}

OK,到这里SqlSessionTemplate就解析完成 了,最后看都看了,码字不易,留个赞 再走吧!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138477.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • react中添加debounce 实现[通俗易懂]

    react中添加debounce 实现[通俗易懂]react中添加debounce实现handelChange(e){//输入框修改的时候执行的方法 e.persist()//react默认会清楚所有的默认属性,所以需要添加这段,保留参数的属性 debounce(()=>{ console.log(e) },500)() }<inputref={ev=>this.moneyInp…

  • Dijkstra算法和Floyed算法「建议收藏」

    Dijkstra算法和Floyed算法「建议收藏」Dijkstra算法和Floyed算法最短路径:在非网图中,最短路径是指两顶点之间经历的边数最少的路径。在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。最短路径问题:单源点到其他顶点的最短路径:Dijkstra方法,O(n2)按路径长度递增任意一对顶点之间的最短路径:Floyed方法,O(n3)Dijkstra算法:按路径长度递增1.设置一个集合S存放已经找到最短…

  • SAE J1939学习笔记(四)

    SAE J1939学习笔记(四)转自:http://blog.csdn.net/hugohut/article/details/24559579多包通信(网络传输层)1.pgn60416–ConnectionManagement2.pgn60160–DataTransfer3.举例Note:TheDataPack

  • [小改进]个人Blog首页显示随笔摘要

    [小改进]个人Blog首页显示随笔摘要

  • lock free(无锁并发)是什么

    lock free(无锁并发)是什么一、非阻塞同步(Non-blockingSynchronization)1.无锁编程/lock-free/非阻塞同步无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blockingSynchronization)。实现非阻塞同步的方案称为“无锁编程算法”(Non-blockingalgorithm)。lock-free是目前最常见的无锁编程的实现级别(一共三种级别):wait-free l.

  • 程序员3到5年薪资水平_程序员生活现状

    程序员3到5年薪资水平_程序员生活现状近日,程序员客栈对中国程序员薪资和生活现状做了一项调查,对全国29个省、直辖市及特别行政区的近55万优秀程序员进行了一次详细的调查。调查结果显示:22-34岁的程序员为这个群体的重要力量,工作年限为5-10年的程序员占了程序员群体的43.4%.工作三年后,程序员的跳槽次数会随着工作年限的增加而增加;73.0%的程序员在民营企业工作。年薪5-25万之间的程序员,占比高达66.3%,此外,59.2%的程序员并没有感受到因为疫情所带来的裁员大潮。程序员平均年薪从上图我们可

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号