spring boot整合双持久层框架jpa、mybatis
公司之前用的是spring boot + jpa,但由于jpa无法完美的解决某些动态查询问题,就使用的jdbcTemplate 动态封装SQL,由于代码相对复杂,可读性差,现准备再引入mybatis。下面说一下整合过程中遇到的问题,以及所踩的坑。
为避免出现问题我们先准备一个干净的工程进行测试
选择web模块以及以下模块
完整项目结构
完整项目地址
https://github.com/tmlh98/springboot-jpa-mybatis.git
SQL文件
/* SQLyog Ultimate v10.00 Beta1 MySQL - 8.0.12 ********************************************************************* */ /*!40101 SET NAMES utf8 */; create table `employee` ( `id` int , `name` varchar , `age` int , `sex` varchar ); insert into `employee` (`id`, `name`, `age`, `sex`) values('1','张三','36','男'); insert into `employee` (`id`, `name`, `age`, `sex`) values('2','李四','24','女'); insert into `employee` (`id`, `name`, `age`, `sex`) values('3','王五','25','男'); insert into `employee` (`id`, `name`, `age`, `sex`) values('4','Aric','15','男');
注意点:
整合两个持久层框架必须有两个dao层,否则程序无法做出正确的选择
spring boot 版本问题
由于是直接在原来的项目上加入mybatis,就忽略了之前的版本,直接在pom文件中加入了pagehelper-spring-boot-starter,然后问题就来了,项目无法启动,无法创建相应的mapper类
回头看之前干净的项目,发现导入的spring boot 版本是1.5.16.RELEASE , 然后修正版本在测试,问题完美解决!