由于官方文档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方式的更多相关文章

  1. SPring整合Mybatis方式一

    Spring整合Mybatis 需要maven包: mysql-connector-java 5.1.47, mybatis 3.5.2, spring-webmvc 5.2.2.RELEASE, s ...

  2. spring boot整合mybatis方式一

    方式一: 导入maven依赖: <!--web依赖配置--> <dependency> <groupId>org.springframework.boot</ ...

  3. spring boot整合mybatis方式二

    方式二: pom文件导入maven依赖: <dependency> <groupId>org.springframework.boot</groupId> < ...

  4. spring 整合 mybatis 中数据源的几种配置方式

    因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...

  5. SpringBoot 整合 Mybatis + Mysql——XML配置方式

    一.介绍 SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式. SpringBoot整合Mybatis也有两 ...

  6. springboot整合mybatis(映射文件方式和注解方式)

    springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选sp ...

  7. SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)

    前言 通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数 ...

  8. SpringBoot系列-整合Mybatis(注解方式)

    目录 一.常用注解说明 二.实战 三.测试 四.注意事项 上一篇文章<SpringBoot系列-整合Mybatis(XML配置方式)>介绍了XML配置方式整合的过程,本文介绍下Spring ...

  9. SpringBoot系列-整合Mybatis(XML配置方式)

    目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...

随机推荐

  1. RainbowCrack彩虹表破解密码hash

    实验目的 使用彩虹表破解散列值b0baee9d279d34fa1dfd71aadb908c3f 实验原理 1)彩虹表破解是利用彩虹表破解散列数据的工具. 这种方法不同于暴力破解攻击.暴力破解攻击会将密 ...

  2. 打印报表工具,web报表工具对比

    ​1.jasperreport报表 有批量报表打印功能,但一般需要通过专门的编程实现批量报表打印:一些较简单的分片式打印能通过主子表实现:不能自动适应纸张大小:不支持分栏打印:不支持一纸多页打印:不支 ...

  3. Java刷题时常用的标准库数据结构和相应算法

    目录 一.线性表(广义的数组) 1. 数组 一维数组的定义和初始化 二维数组的定义和初始化 Arrays工具类的一些常用方法 2. List接口容器 对象的构建 读写和插入删除数据 排序 反转数组 二 ...

  4. Hive复杂数组字典(Json-Array)解析

    数据存储字段格式如下(Json-Array互相嵌套): string='{"id":"9088848902695992720","title" ...

  5. spring--启用注解功能

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.spr ...

  6. vlan端口隔离配置

    对于大型网络来说,vlan是一种不错的解决办法,但对于有些项目,项目本身不需要不同vlan之间进行互访,比如有些监控项目就只需要内网访问,那么就没有必要创建vlan了,用户如果还将不同的端口划入不同的 ...

  7. k8s原来这么简单(一)核心组件与工作原理

     k8s官方文档:https://kubernetes.io/zh/docs/home/ 前提 掌握容器技术:Docker,Containerd等 K8S优势 使用简单,少量人/小团队可以轻松维护大型 ...

  8. 在西电使用校内Linux 开源软件镜像

    西电开源社区(linux.xidian.edu.cn)为全校师生提供开源镜像服务,由于其使用校内服务器,因此产生的流量不会计入校园网 打开镜像列表:https://linux.xidian.edu.c ...

  9. [apue] linux 文件系统那些事儿

    前言 说到 linux 的文件系统,好多人第一印象是 ext2/ext3/ext4 等具体的文件系统,本文不涉及这些,因为研究具体的文件系统难免会陷入细节,甚至拉大段的源码做分析,反而不能从宏观的角度 ...

  10. 装饰器property的简单运用

    property函数:在类中使用,将类中的方法伪装成一个属性 使用方法:在函数,方法,类的上面一行直接@装饰器的名字 装饰器的分类: 装饰器函数 装饰器方法:property 装饰类 class St ...