Spring整合mybatis实现过程详解
增加了用于处理MyBatis的两个bean:SqlSessionFactoryBean、MapperFactoryBean
1、注册SqlSessionFactoryBean:
(1)实现 InitializingBean:调用其afterPropertiesSet方法(this.sqlSessionFactory = buildSqlSessionFactory())
目的就是对于sqlSessionFactory的初始化。
(2)FactoryBean:getBean方法获取bean(= 获取此类的getObject()返回的实例)
if (this.sqlSessionFactory == null) { afterPropertiesSet(); } return this.sqlSessionFactory;
2、注册MapperFactoryBean:
同样实现FactoryBean和InitializingBean
this.sqlSessionTemplate = createSqlSessionTemplate(sqlSessionFactory); //sqlSession作为根据接口创建映射器代理的接触类一定不可以为空, 设定其sqlSessionFactory属性时完成初始化。
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="org.cellphone.uc.repo.mapper.UserMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>//接口是映射器的基础,sqlSession会根据接口动态创建相应的代理类,所以接口必不可少。
1.0:UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
2.0:UserMapper userMapper = (UserMapper) context.getBean("userMapper");
//MyBatis在获取映射的过程中根据配置信息为UserMapper类型动态创建了代理类
3、使用MapperScannerConfigurer:
让它扫描特定的包,自动帮我们成批地创建映射器。不需要我们对于每个接口都注册一个MapperFactoryBean类型的对应的bean,在扫描的过程中通过编码的方式动态注册。
抽象:屏蔽掉了最原始的代码(userMapper的创建)而增加了MapperScannerConfigurer的配置
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
SpringBoot+MybatisPlus+代码生成器整合示例
项目目录结构: pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or
-
SpringBoot整合MyBatis实现乐观锁和悲观锁的示例
本文以转账操作为例,实现并测试乐观锁和悲观锁. 全部代码:https://github.com/imcloudfloating/Lock_Demo GitHub Page:https://cloudli.top 死锁问题 当 A, B 两个账户同时向对方转账时,会出现如下情况: 时刻 事务 1 (A 向 B 转账) 事务 2 (B 向 A 转账) T1 Lock A Lock B T2 Lock B (由于事务 2 已经 Lock A,等待) Lock A (由于事务 1 已经 Lock B,等
-
SpringBoot如何通过yml方式整合Mybatis
本来打算写个使用Sharding-JDBC的例程,但是在搭建Mybatis的过程中,一波三折,因为好久没搭建项目了,另外加上换了电脑.所以很破折,在这里记录一下Spring Boot整合Mybatis吧.可能很简单,但是我长时间没用忘记了,我这里备忘一下吧. 一.项目目录结构 注意这里Application文件的位置,它是与controller.entity.mapper.service等包处于并列的关系. 二.数据库文件 SET NAMES utf8mb4; SET FOREIGN_KEY_C
-
解决SpringBoot整合Mybatis扫描不到Mapper的问题
闲来无事,想学学springboot,开始搭建一个项目,但是一直显示mapper扫描不到的错误: "Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsa
-
Spring Boot整合tk.mybatis代码实例
这篇文章主要介绍了Spring Boot整合tk.mybatis代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概述 tk.mybatis 是在 MyBatis 框架的基础上提供了很多工具,让开发更加高效 引入依赖 在 pom.xml 文件中引入 mapper-spring-boot-starter 依赖,该依赖会自动引入 MyBaits 相关依赖 <dependency> <groupId>tk.mybatis</
-
SpringBoot 整合jdbc和mybatis的方法
通用配置# 下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置 数据库表# CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_
-
Mybatis插件扩展及与Spring整合原理分析
前言 前面几篇文章分析了Mybatis的核心原理,但模块较多,没有一一分析,更多的需要读者自己下来研究.不过Mybatis的插件扩展机制还是非常重要的,像PageHelper就是一个扩展插件,熟悉其扩展原理,才能更好的针对我们的业务作出更合适的扩展.另外,现在Mybatis都是和Spring/SpringBoot一起使用,那么Mybatis又是如何与它们进行整合的呢?一切答案尽在本文之中. 正文 插件扩展 1. Interceptor核心实现原理 熟悉Mybatis配置的都知道,在xml配置中我
-
SpringBoot整合MybatisSQL过滤@Intercepts的实现
场景: 系统模块查询数据库需要根据用户的id去筛选数据.那么如果在 每个sql加user_id的过滤显然不明确.所以要在查询前将sql拼接上条件,做统一管理. 开发环境: spring boot + mybatis 只需一个拦截类即可搞定(在看代码前需要了解注解@Intercepts()): @Component @Intercepts({ @Signature(type = Executor.class, method = "query", args = {MappedStateme
-
Spring整合mybatis实现过程详解
增加了用于处理MyBatis的两个bean:SqlSessionFactoryBean.MapperFactoryBean 1.注册SqlSessionFactoryBean: (1)实现 InitializingBean:调用其afterPropertiesSet方法(this.sqlSessionFactory = buildSqlSessionFactory()) 目的就是对于sqlSessionFactory的初始化. (2)FactoryBean:getBean方法获取bean(= 获
-
spring整合Quartz框架过程详解
这篇文章主要介绍了spring整合Quartz框架过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.Quartz框架简介 Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性.主要用来执行定时任务,如:定时发送信息.定时生成报表等等. Quartz框架的主要特点: · 强大的调度功能,例如丰富多样的
-
Spring利用注解整合Mybatis的方法详解
目录 一.环境准备 步骤1:数据库相关 步骤2:导入jar包 步骤3:创建模型类 步骤4:创建Dao接口和实现类 步骤5:创建Service接口和实现类 步骤6:添加jdbc.properties文件 步骤7:添加Mybatis核心配置文件 步骤8:编写测试程序 二.整合思路分析 三.整合步骤 步骤1:导入整合jar包 步骤2:创建数据源配置类 步骤3:创建Mybatis配置类 步骤4:创建Spring主配置类 步骤5:编写运行程序 一.环境准备 步骤1:数据库相关 建库建表 创建spring_
-
SpringBoot整合Druid数据源过程详解
这篇文章主要介绍了SpringBoot整合Druid数据源过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.数据库结构 2.项目结构 3.pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</ar
-
spring、mybatis 配置方式详解(常用两种方式)
在之前的文章中总结了三种方式,但是有两种是注解sql的,这种方式比较混乱所以大家不怎么使用,下面总结一下常用的两种总结方式: 一. 动态代理实现 不用写dao的实现类 这种方式比较简单,不用实现dao层,只需要定义接口就可以了,这里只是为了记录配置文件所以程序写的很简单: 1.整体结构图: 2.三个配置文件以及一个映射文件 (1).程序入口以及前端控制器配置 web.xml <?xml version="1.0" encoding="UTF-8"?> &
-
Spring整合MyBatis图示过程解析
这篇文章主要介绍了Spring整合MyBatis图示过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入所需要的jar依赖 !--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <vers
-
Spring cloud config集成过程详解
这篇文章主要介绍了spring cloud config集成过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring Cloud Config 分为 Config Server: 分布式配置中心,是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息 Config Client: 通过指定配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息 Spring boot版本2.1.8.
-
SpringBoot整合mybatis的方法详解
目录 1依赖配置 2使用 2.1SpringBoot配置整合mybatis: 2.2SpringBoot注解整合mybatis: 2.3在配置类上增加@MapperScan注解,扫描某个包下的全部Mapper文件: 总结 1 依赖配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &l
-
SpringBoot整合MyBatis的代码详解
目录 SpringBoot整合MyBatis 依赖的导入 大致目录 相关文件配置 创建数据库和相对应的Pojo类 Service层的编写 Controller层的编写 登录测试 SpringBoot整合MyBatis 依赖的导入 整合mybatis之前我们需要相对应的导入相关依赖. <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-s
-
spring 集成 mybatis的实例详解
环境配置 1>先创建maven的quickstart项目;并且创建dao层,service层,controller层,po层,mapper,resources以及下面的配置文件(db.properties,log4j.properties,mybatis.xml,spring.xml). 2>配置pom.xml 修改jdk版本; 添加依赖: junit版本改为4.12;spring-context;spring-test;spring-jdbc;spring-tx(事务);aspe
随机推荐
- 如何用表单的方式推送请求的信息?
- jQuery通过控制节点实现仅在前台通过get方法完成参数传递
- JavaScript滑移效果代码
- Java Enum的简单使用
- 在IE6下发生Internet Explorer cannot open the Internet site错误
- JavaScript栏目列表隐藏/显示简单实现
- 教你用javascript实现随机标签云效果_附代码
- ASP.NET中各个后缀名的含义介绍
- thinkPHP实现的联动菜单功能详解
- Yii2针对游客、用户防范规则和限制的解决方法分析
- Android批量插入数据到SQLite数据库的方法
- js css 实现遮罩层覆盖其他页面元素附图
- CSS定位中Positoin、absolute、Relative的一些研究
- mysql与mssql的md5加密语句
- jQuery简单tab切换效果实现方法
- Python如何实现守护进程的方法示例
- clipse项目迁移到android studio的方法(图文最新版)
- Java基础教程之实现接口
- java 反射机制
- Smarty foreach控制循环次数的实现详解