SpringDataJdbc整合MyBatis方式
由于官方文档springdatajdbc整合mybatis过于简述,导致死磕了一段时间,
SpringDataJdbc整合Mybatis的官方文档:https://docs.spring.io/spring-data/jdbc/docs/2.0.0.RELEASE/reference/html/#jdbc.mybatis
至于选择SpringDataJdbc + Mybatis这个原因,就是可以手动控制SQL语句并且基本的单表SQL直接可以继承 CrudRepository 接口,不用再写那些基本的SQL了,复杂的查询直接可以定义在Mapper的XML文件里
此Demo项目的Git地址:https://github.com/starSmallDream/MySpringJDBCAndMyBatisExample.git
本人spring boot Maven项目,在pom文件加入mybatis和springdatajdbc的依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
然后按照官方文档进行配置Bean,当然,这些SqlSessionFactoryBean和sqlSessionTemplate已经由mybatis-spring-boot-starter依赖自动配置完了,所以,可以省略下面的Bean配置
@Configuration
@EnableJdbcRepositories
@Import(MyBatisJdbcConfiguration.class)
class Application { @Bean
SqlSessionFactoryBean sqlSessionFactoryBean() {
// Configure MyBatis here
}
}
如果到这里还是启动找不到Mapper接口的方法的话,那就是需要配置下NamespaceStrategy接口实现,根据自己的包结构进行返回Mapper接口的位置,由于这是通过 实体类(包名) + Mapper 命名的方式查找Mapper接口文件的,所以文件名还是需要规范下的。
这是我根据自己包的位置进行配置下Mapper文件的寻找路径:
第一步:实现 NamespaceStrategy 接口

第二部:
把 MyBatisJdbcConfiguration 此类的方法copy出来,因为要使用我们自定义的命名空间策略
看这个类里面的代码,你会找到为什么会执行不了Mapper文件的SQL语句
下图是此Configuration配置类的内容

因为 对应的Mapper文件存在要执行的方法名的SQL语句,则优先执行Mapper文件的,否则,会执行CrudRepository里面的代码,因为我的Mapper接口文件继承了CrudRepository接口。

这样,可以使用Mybatis的XML文件又可以使用基于SpringDataJdbc依赖的注解和方法名语义执行SQL了。。。
SpringDataJdbc整合MyBatis方式的更多相关文章
- SPring整合Mybatis方式一
Spring整合Mybatis 需要maven包: mysql-connector-java 5.1.47, mybatis 3.5.2, spring-webmvc 5.2.2.RELEASE, s ...
- spring boot整合mybatis方式一
方式一: 导入maven依赖: <!--web依赖配置--> <dependency> <groupId>org.springframework.boot</ ...
- spring boot整合mybatis方式二
方式二: pom文件导入maven依赖: <dependency> <groupId>org.springframework.boot</groupId> < ...
- spring 整合 mybatis 中数据源的几种配置方式
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...
- SpringBoot 整合 Mybatis + Mysql——XML配置方式
一.介绍 SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式. SpringBoot整合Mybatis也有两 ...
- springboot整合mybatis(映射文件方式和注解方式)
springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选sp ...
- SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)
前言 通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数 ...
- SpringBoot系列-整合Mybatis(注解方式)
目录 一.常用注解说明 二.实战 三.测试 四.注意事项 上一篇文章<SpringBoot系列-整合Mybatis(XML配置方式)>介绍了XML配置方式整合的过程,本文介绍下Spring ...
- SpringBoot系列-整合Mybatis(XML配置方式)
目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...
随机推荐
- 古典密码之凯撒密码and换位密码
凯撒密码: 密文:wuhdwb lpsrvvleoh 算法:Ci=E(pi)=(pi+3)mod 26 明文:TREATY IMPOSSIBLE 例如ABCD这四个字母要进行加密,如果我们设置它的偏移 ...
- [题解]UVA10700 Camel trading
链接:http://vjudge.net/problem/viewProblem.action?id=21358 描述:给出一个算式,算式里面有加法和乘法,可以任意添加括号从而改变计算顺序.求可能得到 ...
- 赶紧收藏!最好用的BI工具都在这了!
1.bi厂商--思迈特软件Smartbi 广州思迈特软件有限公司成立于2011 年,以提升和挖掘企业客户的数据价值为使命,专注于商业智能与大数据分析软件产品与服务.思迈特软件是国家认定的"高 ...
- 【windows 访问控制】七、window 访问控制编辑器(Access Control Editor)
window 访问控制编辑器(Access Control Editor) 右键(文件.目录.程序)>选择属性>安全>高级 进入访问控制编辑器
- C#爬虫(02):Web browser控件CefSharp的使用
一.CefSharp介绍 CEF 全称是Chromium Embedded Framework(Chromium嵌入式框架),是个基于Google Chromium项目的开源Web browser控件 ...
- OJ教程--递归
弄清楚递归的基本思想,递归函数的运行过程,暂且不考虑是否使用递归在效率方面的差异. 题目 1: 数的组合问题.从1,2,-,n中取出m个数,将所有组合按照字典顺序列出.如n=3,m=2时,输出:12 ...
- Qt:QSqlQuery
0.说明 QSqlQuery提供了执行SQL代码的方法. QSqlQuery封装了在QSqlDatabase中查询.检索数据的相关函数.它可以用来执行如SELECT.INSERT.UPDATE.DEL ...
- Python:对元组使用关键字in
如果in的左边是个含有多个元素的元组对象 例如 ('a','b') in L 那么L在什么情况下,这个式子会输出True呢? 答案是,L中必须也有一个和想要查找的元组一模一样的元组才行,比如: L=[ ...
- Tableau学习Step5一表计算、详细级别表达式、动作、外接python
Tableau学习Step5一表计算.详细级别表达式.动作.外接python 本文首发于博客冰山一树Sankey,去博客浏览效果更好. ) Tableau学习Step4一数据解释.异常值监测.参数使用 ...
- .NET 6: New DateOnly and TimeOnly strcuts
Background and Motivation .NET 目前有用于处理日期和时间的DateTime和DateTimeOffset.但在许多情况下,用户需要处理日期而根本不关心时间部分,也存在需要 ...
