当前使用版本(必填,否则不予处理)
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
目前配置是这样
数据源切换应该是有成功的
若使用 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)