当前使用版本(必填,否则不予处理)

mybatis-plus version: 3.4.0 dynamic-datasource-spring-boot-starter version: '3.2.1'

该问题是如何引起的?(确定最新版也有问题再提!!!)

目前使用多数据源 Postgresql (主要) 和 Sqlserver 如果 Service 是使用 SqlServer 分页这里后段会是以 LIMIT ? 呈现

重现步骤(如果有就写完整)

报错信息



org.springframework.jdbc.UncategorizedSQLException: 
### Error querying database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'LIMIT'.
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'LIMIT'.


Comment From: miemieYaho

你数据源没切换成功吧,你给个复现demo出来

Comment From: pozxnm000

@miemieYaho

目前配置是这样 1606202269774 1606228444994

数据源切换应该是有成功的

若使用 IPage 则会出现错误


 @Service("ABC")
 @DS("sqlserver")
public class ABCImpl extends ServiceImpl<ABCDAO, ABC> implements IABCService {

    @Override
    public IPage<ABC> selectList() {
        LambdaQueryWrapper<ABC> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(ABC::getDataKey);
        return this.page(PageFactory.defaultPage(), queryWrapper);
    }
}

若使用 list 可以正常输出


@Service("ABC")
@DS("sqlserver")
public class ABCImpl extends ServiceImpl<ABCDAO, ABC> implements IABCService {

    @Override
    public List<ABC> selectList() {
        LambdaQueryWrapper<ABC> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(ABC::getDataKey);

        return this.list(queryWrapper);
    }
}


Comment From: miemieYaho

分页插件构造函数把你指定的dbtype删了

Comment From: pozxnm000

@miemieYaho 抱歉小弟太浅, 这部分想请教一下能怎么做呢~?

Comment From: miemieYaho

分页插件不指定dbtype,而且你那dbtype是h2,真就cv代码不需要动脑吗?

Comment From: pozxnm000

@miemieYaho 理解了, 抱歉没注意到这块 , 感谢!!

Comment From: t0rjan

在自定义声明DataSourceConfig那里,SqlSessionFactory bean的部分,加上这个,不同的数据源,自己选择不同的DbType MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); //分页 MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER)); bean.setPlugins(mybatisPlusInterceptor)