mybatis-plus 支持不同数据源sql切换

mybatis-plus 支持不同数据源sql切换

本篇内容主要讲解的是mybatis-plus 支持不同数据源sql切换

直接上代码

1、结构代码

在这里插入图片描述

2、引入依赖

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Tag-mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version></dependency><!-- Tag-mybatis plus--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- https://mvnrepository.com/artifact/org.opengauss/opengauss-jdbc --><dependency><groupId>org.opengauss</groupId><artifactId>opengauss-jdbc</artifactId><version>3.0.0</version></dependency>

3、代码

MybatisPlusConfig

@Configuration
@MapperScan("com.liuhm.dao.mapper*")
public class MybatisPlusConfig {@AutowiredMybatisPlusProperties mybatisPlusProperties;/*** 分页插件*/@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();paginationInterceptor.setDialectType(mybatisPlusProperties.getGlobalConfig().getDbConfig().getDbType().getDb());return paginationInterceptor;}/*** SQL执行效率插件* 设置 dev test 环境开启*/@Bean/*@Profile({"dev","test"})*/public PerformanceInterceptor performanceInterceptor() {return new HyperformanceInterceptor();}}

MenuMapper.java

/*** 菜单 mapper 接口** @author liuhaomin* @date 2023.7.10*/
@Repository
@CacheNamespace
public interface MenuMapper extends BaseMapper<Menu> {public List<Menu> select();
}

com.liuhm.dao.mysqlmapper.MenuMapper.xml

mysql查询10条

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liuhm.dao.mapper.MenuMapper"><cache-ref namespace="com.liuhm.dao.mapper.MenuMapper"/><select id="select" resultType="com.liuhm.entity.Menu">select * from mcp_menu limit 10</select></mapper>

com.liuhm.dao.tidb.MenuMapper.xml

tidb查询1条

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liuhm.dao.mapper.MenuMapper"><cache-ref namespace="com.liuhm.dao.mapper.MenuMapper"/><select id="select" resultType="com.liuhm.entity.Menu">select * from mcp_menu limit 1</select></mapper>

application.yml

spring:datasource:# mysql
#    driver-class-name: com.mysql.jdbc.Driver
#    username: root
#    password: Cobbler1234!
#    url: jdbc:mysql://192.168.0.229:43306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
# gaussdb
#    driver-class-name: org.opengauss.Driver
#    username: ga_mason
#    password: OpenGauss@123
#    url: jdbc:opengauss://192.168.0.120:5432/my_db
# tidbdriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://192.168.56.10:4000/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
mybatis-plus:mapper-locations: classpath*:com/liuhm/dao/tidbmapper/*Mapper.xml# 实体扫描,多个package用逗号或者分号分隔type-aliases-package: com.liuhm.entityglobal-config:db-config:id-type: id_workerfield-strategy: not_nulllogic-delete-value: 0logic-not-delete-value: 0db-type: mysqlbanner: falseconfiguration:map-underscore-to-camel-case: truecache-enabled: falseserver:port: 9099

★4、不同数据源进行切换步骤

改变对应的连接方式,修改连接,驱动

增加对应的特殊sql

修改db-type

修改对应的mapper-locations

5、测试

使用mysql时候

yml 配置 设置扫描xml地址

mybatis-plus:mapper-locations: classpath*:com/liuhm/dao/mysqlmapper/*Mapper.xmlglobal-config:db-config:db-type: mysql

启动服务测试

MenuMapperTest.select

在这里插入图片描述

使用tidb时候

yml 配置 设置扫描xml地址

mybatis-plus:mapper-locations: classpath*:com/liuhm/dao/tidbmapper/*Mapper.xmlglobal-config:db-config:db-type: mysql

启动服务测试

MenuMapperTest.select

在这里插入图片描述

6、不同版本对应分页插件情况

官方地址

3.1.0版本支持的分页插件

 	MYSQL("mysql", "%s LIKE CONCAT('%%',#{%s},'%%')", "MySql数据库"),MARIADB("mariadb", "%s LIKE CONCAT('%%',#{%s},'%%')", "MariaDB数据库"),ORACLE("oracle", "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')", "Oracle数据库"),DB2("db2", "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')", "DB2数据库"),H2("h2", "%s LIKE CONCAT('%%',#{%s},'%%')", "H2数据库"),HSQL("hsql", "%s LIKE CONCAT('%%',#{%s},'%%')", "HSQL数据库"),SQLITE("sqlite", "%s LIKE CONCAT('%%',#{%s},'%%')", "SQLite数据库"),POSTGRE_SQL("postgresql", "%s LIKE CONCAT('%%',#{%s},'%%')", "Postgre数据库"),SQL_SERVER2005("sqlserver2005", "%s LIKE '%%'+#{%s}+'%%'", "SQLServer2005数据库"),SQL_SERVER("sqlserver", "%s LIKE '%%'+#{%s}+'%%'", "SQLServer数据库"),DM("dm", (String)null, "达梦数据库"),OTHER("other", (String)null, "其他数据库");

3.5.3版本支持的分页插件

 	MYSQL("mysql", "MySql数据库"),MARIADB("mariadb", "MariaDB数据库"),ORACLE("oracle", "Oracle11g及以下数据库(高版本推荐使用ORACLE_NEW)"),ORACLE_12C("oracle12c", "Oracle12c+数据库"),DB2("db2", "DB2数据库"),H2("h2", "H2数据库"),HSQL("hsql", "HSQL数据库"),SQLITE("sqlite", "SQLite数据库"),POSTGRE_SQL("postgresql", "Postgre数据库"),SQL_SERVER2005("sqlserver2005", "SQLServer2005数据库"),SQL_SERVER("sqlserver", "SQLServer数据库"),DM("dm", "达梦数据库"),XU_GU("xugu", "虚谷数据库"),KINGBASE_ES("kingbasees", "人大金仓数据库"),PHOENIX("phoenix", "Phoenix HBase数据库"),GAUSS("zenith", "Gauss 数据库"),CLICK_HOUSE("clickhouse", "clickhouse 数据库"),GBASE("gbase", "南大通用(华库)数据库"),GBASE_8S("gbase-8s", "南大通用数据库 GBase 8s"),/** @deprecated */@DeprecatedGBASEDBT("gbasedbt", "南大通用数据库"),/** @deprecated */@DeprecatedGBASE_INFORMIX("gbase 8s", "南大通用数据库 GBase 8s"),OSCAR("oscar", "神通数据库"),SYBASE("sybase", "Sybase ASE 数据库"),OCEAN_BASE("oceanbase", "OceanBase 数据库"),FIREBIRD("Firebird", "Firebird 数据库"),HIGH_GO("highgo", "瀚高数据库"),CUBRID("cubrid", "CUBRID数据库"),GOLDILOCKS("goldilocks", "GOLDILOCKS数据库"),CSIIDB("csiidb", "CSIIDB数据库"),SAP_HANA("hana", "SAP_HANA数据库"),IMPALA("impala", "impala数据库"),VERTICA("vertica", "vertica数据库"),XCloud("xcloud", "行云数据库"),REDSHIFT("redshift", "亚马逊redshift数据库"),OPENGAUSS("openGauss", "华为 opengauss 数据库"),TDENGINE("TDengine", "TDengine数据库"),INFORMIX("informix", "Informix数据库"),UXDB("uxdb", "优炫数据库"),OTHER("other", "其他数据库");

博客地址

代码下载

下面的mybatis-plus-demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27108.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用html+javascript打造公文一键排版系统6:三级标题排版

正文中的标题分为四级&#xff0c;文中结构层次序数依次可以用“一、”“&#xff08;一&#xff09;”“1.”“&#xff08;1&#xff09;”标注&#xff1b;一般第一层用黑体字、第二层用楷体字加粗、第三层和第四层用仿宋体字标注。 对于以阿拉伯数字开头、后接英文点号.及…

2019年 iMac 21.5寸升级内存条和硬盘

硬件更换 CPU&#xff1a;i5-8500&#xff0c;最高可换到i7&#xff0c;算了&#xff0c;挤牙膏厂&#xff0c;性能提升不如换内存和SSD&#xff0c;i9散热不太好&#xff08;主要是穷&#xff09;显卡&#xff1a;焊在里面换不了&#xff08;外置显卡&#xff0c;主要是穷&am…

Prometheus实现钉钉报警

1、Prometheus实现钉钉报警 1.1 Prometheus环境 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute…

opencv -10 基础运算之 图像加权和(图像融合图像修复视频合成)

什么是图像加权和&#xff1f; 所谓图像加权和&#xff0c;就是在计算两幅图像的像素值之和时&#xff0c;将每幅图像的权重考虑进来&#xff0c;可以用公式表示为&#xff1a; dst saturate(src1 &#x1d6fc; src2 &#x1d6fd; &#x1d6fe;)式中&#xff0c;satu…

Elasticsearch:语义搜索、知识图和向量数据库概述

结合对你自己的私有数据执行语义搜索的概述 什么是语义搜索&#xff1f; 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。 这种方法基于这样的想法&#xff1a;搜索引擎不仅应该匹配查询中的关键字&#xff0c;还应该尝…

C# Sdcb.Paddle2Onnx Paddle模型通过C#转换为ONNX模型

https://github.com/sdcb/PaddleSharp/blob/feature/2.5/docs/paddle2onnx.md 效果 项目 代码 using Sdcb.Paddle2Onnx; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing…

代码随想录算法训练营day6 | 242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

目录 242. 有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 242. 有效的字母异位词 242. 有效的字母异位词 难度&#xff1a;easy 类型&#xff1a;哈希表 思路&#xff1a; 代码&#xff1a; class Solution {public boolean isAnagram(String s, St…

STM32(HAL库)驱动GY30光照传感器通过串口进行打印

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 软件IIC引脚配置 2.3 串口外设配置 2.4 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 GY30驱动添加 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机通过HAL库方…

DOM编程

DOM编程 DOM树&#xff1a; 获取DOM对象的方式&#xff1a; 通过id直接获取 id禁止使用&#xff0c;因为项目都是css、html、js分离的 2、通过API&#xff0c;doucument.getElementById 3、通过class&#xff0c;doucument.getElementsByClassName 4、通过标签名称&#xff0…

Vue收集表单数据

收集表单数据&#xff1a; 若&#xff1a;<input type"text"/>&#xff0c;则v-model收集的是value值&#xff0c;用户输入的就是value值。 若&#xff1a;<input type"radio"/>&#xff0c;则v-model收集的是value值&#xff0c;且要给标签配…

快速入门Linux 中的常用命令

目录 Linux 常用命令lspwdcdtouchcatmkdirrmcpmvvimgreppsnetstat Linux 常用命令 使用终端软件连接到Linux系统后会出现下面这样的 root 表示当前用户的用户名 iZbp1gjlzlb0uidsc2adxuZ 表示主机名 ~ 表示当前所在的目录&#xff0c;在Linux中表示home目录&#xff08;用户数…

LVS—Linux Virtual Server

集群和分布式 系统性能拓展方式&#xff1a; Scale UP&#xff1a;垂直拓展&#xff0c;提高单个服务器的性能&#xff0c;如增加CPU、内存等&#xff0c;单台服务器的性能是有上限的&#xff0c;不可能无限制垂直拓展。Scale Out&#xff1a;水平拓展&#xff0c;增加设备&a…