【MyBatis-Plus】多数据源分页配置(低版本暂时只能支持一种,高版本多支持)
2023-12-18 18:19:23
低版本 3.0.7.1
MybatisPlusConfig 代码
package com.greatoo.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus配置
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType(DbType.SQL_SERVER2005.getDb());
return paginationInterceptor;
}
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
}
DbType 代码
package com.baomidou.mybatisplus.annotation;
import lombok.Getter;
@Getter
public enum DbType {
/**
* MYSQL
*/
MYSQL("mysql", "%s LIKE CONCAT('%%',#{%s},'%%')", "MySql数据库"),
/**
* MARIADB
*/
MARIADB("mariadb", "%s LIKE CONCAT('%%',#{%s},'%%')", "MariaDB数据库"),
/**
* ORACLE
*/
ORACLE("oracle", "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')", "Oracle数据库"),
/**
* DB2
*/
DB2("db2", "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')", "DB2数据库"),
/**
* H2
*/
H2("h2", "%s LIKE CONCAT('%%',#{%s},'%%')", "H2数据库"),
/**
* HSQL
*/
HSQL("hsql", "%s LIKE CONCAT('%%',#{%s},'%%')", "HSQL数据库"),
/**
* SQLITE
*/
SQLITE("sqlite", "%s LIKE CONCAT('%%',#{%s},'%%')", "SQLite数据库"),
/**
* POSTGRE
*/
POSTGRE_SQL("postgresql", "%s LIKE CONCAT('%%',#{%s},'%%')", "Postgre数据库"),
/**
* SQLSERVER2005
*/
SQL_SERVER2005("sqlserver2005", "%s LIKE '%%'+#{%s}+'%%'", "SQLServer2005数据库"),
/**
* SQLSERVER
*/
SQL_SERVER("sqlserver", "%s LIKE '%%'+#{%s}+'%%'", "SQLServer数据库"),
/**
* DM
*/
DM("dm", null, "达梦数据库"),
/**
* UNKONWN DB
*/
OTHER("other", null, "其他数据库");
/**
* 数据库名称
*/
private final String db;
/**
* LIKE 拼接模式
*/
private final String like;
/**
* 描述
*/
private final String desc;
DbType(String db, String like, String desc) {
this.db = db;
this.like = like;
this.desc = desc;
}
/**
* <p>
* 获取数据库类型(默认 MySql)
* </p>
*
* @param dbType 数据库类型字符串
*/
public static DbType getDbType(String dbType) {
DbType[] dts = DbType.values();
for (DbType dt : dts) {
if (dt.getDb().equalsIgnoreCase(dbType)) {
return dt;
}
}
return OTHER;
}
}
高版本 3.5.3.1
MybatisPlusConfig 代码
package io.renren.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus配置
*/
@Configuration
public class MybatisPlusConfig {
/**
* 防止修改与删除时对全表进行操作
*/
@Bean
public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
return new BlockAttackInnerInterceptor();
}
/**
* 新的分页插件,一缓和二缓遵循 mybatis 的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 里面不要填写 DbType.MYSQL 做限制,就能支持多数据源
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
文章来源:https://blog.csdn.net/weixin_50223520/article/details/135066512
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!