开始公司主要使用的是Springboot+JPA后来要对接一个其他系统,然后加了一个数据库,就成了Springboot+JPA+多数据源,但是后面随着业务发现JPA有时候用着太难受,就想着加个Mybatis,然后去网上搜如何整合JPA+Mybatis,但是网上的教程都是单数据源整合的,没有发现多数据源整合的案例。想着之前整合过Mybatis+多数据源,然后就把配置文件复制一份,开始踩坑之路。
目录
目录
一、注意点
- Springboot和mybatis的版本必须对应,这个很坑,大多数时间都浪费在这里了
- application文件的数据源命名
- 配置文件的数据源和yml文件一致
- 配置文件中 实体类和mapper,xml(注意xml文件的文件后缀是否是.xml)的位置
- 回滚操作,必须指名事务管理器
- //@Transactional(rollbackFor = OAPMException.class, value = "transactionManagerSecondary")
- JPA和mybatis 都有primary源,回滚无法默认主数据源,必须指定
二、文件目录
三、application文件和pom文件
-
applicatio文件
- 需要注意的地方就是,数据源命名及各数据源的方言配置
spring:
jpa:
hibernate:
ddl-auto: none
show-sql: true
properties:
hibernate:
primary-dialect: org.hibernate.dialect.PostgreSQLDialect
secondary-dialect: org.hibernate.dialect.MySQL5Dialect
temp:
use_jdbc_metadata_defaults: false
#primary
primary:
datasource:
driver-class-name: org.postgresql.Driver
jdbc-url: jdbc:postgresql://127.0.0.1:5432/xxxx
username: user
password: password
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 10000
timeBetweenEvictionRunMillis: 60000
minEvictableIdleTimeMillis: 30000
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 10
filters: stat
#secondary
secondary:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3307/bitnami_redmine?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false
username: bitnami
password: 928311f90a
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 10000
timeBetweenEvictionRunMillis: 60000
minEvictableIdleTimeMillis: 30000
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 10
filters: stat
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
mail:
host: smtp.glorysoft.com
port: 25
username: oasystem@glorysoft.com
password: glory123
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
main:
allow:
bean:
definition:
overriding: true
logging:
config: classpath:config/logback.xml
level:
com:
glory:
oa:
pm:
mapper: debug
pom文件
需要注意的地方就是,Springboot和mybatis的版本必须对应,这个很坑,这个我也不清楚具体的对应版本,只知道我用的这两个是不冲突的。SpringBoot-2.1.12和Mybatis-2.1.1
<?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.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.x