本篇内容主要讲解的是mybatis-plus 支持不同数据源sql切换
直接上代码
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus-boot-starter
3.5.3
mysql
mysql-connector-java
5.1.47
org.opengauss
opengauss-jdbc
3.0.0
@Configuration
@MapperScan("com.liuhm.dao.mapper*")
public class MybatisPlusConfig {
@Autowired
MybatisPlusProperties mybatisPlusProperties;
/**
* 分页插件
*/
@Bean
public 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();
}
}
/**
* 菜单 mapper 接口
*
* @author liuhaomin
* @date 2023.7.10
*/
@Repository
@CacheNamespace
public interface MenuMapper extends BaseMapper<Menu> {
public List<Menu> select();
}
mysql查询10条
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>
tidb查询1条
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>
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
# tidb
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
url: 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.entity
global-config:
db-config:
id-type: id_worker
field-strategy: not_null
logic-delete-value: 0
logic-not-delete-value: 0
db-type: mysql
banner: false
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
server:
port: 9099
yml 配置 设置扫描xml地址
mybatis-plus:
mapper-locations: classpath*:com/liuhm/dao/mysqlmapper/*Mapper.xml
global-config:
db-config:
db-type: mysql
启动服务测试
MenuMapperTest.select
yml 配置 设置扫描xml地址
mybatis-plus:
mapper-locations: classpath*:com/liuhm/dao/tidbmapper/*Mapper.xml
global-config:
db-config:
db-type: mysql
启动服务测试
MenuMapperTest.select
官方地址
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, "其他数据库");
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 */
@Deprecated
GBASEDBT("gbasedbt", "南大通用数据库"),
/** @deprecated */
@Deprecated
GBASE_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