前言
昨天写的idea+Apifox uploader插件+apifox新年第一天上班就上榜了,真是不错。今天来补一篇,本来应该是在前一篇之前发的。实际上就是最新的springBoot集成最新的mybatisPlus,加双数据源:mysql、TDengine,一个关系型数据库,一个时序数据库。文末有独家demo的git地址。
springBoot3集成的哦,其他依赖也都是最新版本,独家的哦。好了,不废话,直接上重点。
一、新建最新springBoot3项目
这个没有啥好说的,就是选择spring项目了,下一步下一步,直接看引入的包吧。
pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 3.0.1 com.xiaotian data-trans 0.0.1-SNAPSHOT data-trans data-trans 17 UTF-8 17 17 1.4.3 true org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow 3.0.1 org.springframework.boot spring-boot-starter-data-jdbc org.mybatis.spring.boot mybatis-spring-boot-starter 3.0.1 com.baomidou mybatis-plus-boot-starter 3.5.3.1 com.baomidou mybatis-plus 3.5.3.1 com.baomidou mybatis-plus-extension 3.5.3.1 com.taosdata.jdbc taos-jdbcdriver 3.0.3 mysql mysql-connector-java 8.0.30 com.baomidou dynamic-datasource-spring-boot-starter 3.3.6 org.springframework.boot spring-boot-starter-data-redis 2.7.5 org.apache.commons commons-pool2 com.yomahub tlog-all-spring-boot-starter ${tlog.version} com.baomidou mybatis-plus-generator 3.5.3.1 org.apache.velocity velocity-engine-core 2.3 org.projectlombok lombok true provided org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine junit junit org.springframework.boot spring-boot-maven-plugin 3.0.1 org.projectlombok lombok
项目结构:
二、关键代码
1.多数据源配置
application.yml
#容器配置server: port: 8199 servlet: context-path: /datatrans shutdown: graceful#spring基础配置spring: application: name: dataTrans freemarker: check-template-location: false cache: false global: date-format: yyyy-MM-dd HH:mm:ss mvc: throw-exception-if-no-handler-found: true static-path-pattern: actuator@Configuration@MapperScan(basePackages = {"com.xiaotian.datatrans.mapper.mysql"}, sqlSessionTemplateRef = "mysqlSqlSessionTemplate")public class MysqlServerConfig { @Autowired private PaginationInnerInterceptor paginationInnerInterceptor; private static final String MAPPER_LOCATION = "classpath:mapper/tdengine@Configuration@MapperScan(basePackages = "com.xiaotian.datatrans.mapper.tdengine", sqlSessionTemplateRef = "tdengineSqlSessionTemplate")public class TDengineServerConfig { @Autowired private PaginationInnerInterceptor paginationInnerInterceptor; private static final String MAPPER_LOCATION = "classpath:mapper/tdengine@DS("tdengine-service") //指定数据源注解,名称与配置数据源名称一致public interface StudentMapper extends BaseMapper { int insertStudent(Student record); IPage selectStudentPage(Page page,@Param("student") Student customQueryParams);}
3.核心注意点
先看启动类:
package com.xiaotian.datatrans;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.domain.EntityScan;@EntityScan("com.xiaotian")@SpringBootApplicationpublic class DataTransApplication { public static void main(String[] args) { SpringApplication.run(DataTransApplication.class, args); System.out.println("--数据精灵启动成功--"); }}
1、Mapper扫描问题:
细心的小伙伴可能知道,一般springboot的,要么在配置里配置mapper的包路径,要么在启动类上写注解@MapperScan(“包路径”),如果是多个@MapperScan(basePackages = {“com.xx..mapper","com.xxx..dao”}),但是我这里配置里没有配置,启动类也没有注解,为什么呢?
原因其实很简单,这些预制的基础配置都是给单数据源用的,如果用多数据源,那么各个mapper就要对应不同的数据源,所以这些mapper扫描,在数据源配置类上设置了。大家可以回头看看我的2个数据源配置类是不是有注解@MapperScan。
2、分页插件问题
一般单数据源,那么只需要一个分页插件配置类就行,例如我这里的MyBatisPlusConfig.java。
但是这里因为是多数据源,所以插件的设置需要在数据源上做拦截,大家可以看看我2个数据源里的sessionFactory里的MybatisPlusInterceptor设置。
另外这里要注意的是最新版本的mybatisPlus已经用PaginationInnerInterceptor拦截器了,原先的PaginationInterceptor已经废除了。
总结
- mybatisPlus真香,支持的数据源真多
- mybatisPlus、分页插件支持TDengine不久,TDengine的更新是用insert操作的,只是时间挫是一致的就行,但是mybatisPlus的BaseMapper里的update方法并不会根据数据源使用insert组织sql。
- mybatisPlus在3.4.2时移除了Rest Api
- CSDN的gitcode也真香啊
- 本次案例的整个demo就在我的gitcode里,公开的,git下载以后,改改配置里的数据源ip、账号、密码,建表就可以看到效果了。地址:https://gitcode.net/zwrlj527/data-trans.git
好了,就到这里,希望可以帮到大家,uping!!!
来源地址:https://blog.csdn.net/zwrlj527/article/details/128785585