1. 注册分页插件(不注册分页插件total也是0):
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/*
如果不注册分页插件,那么查询数据时,数据能正常查询,但是total是0
* */
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() { //注册插件
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //new一个mybatisplus插件对象,再下面注入各插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL)); // 分页插件
//interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); // 乐观锁插件
//乐观锁插件机制:Plus是在数据表中加上一个数据版本号 version 字段,表示数据被修改的次数。当数据被修改时,version 值会+1。当事务A要更新数据值时,在读取数据的同时也会读取 version 值,在提交更新时,会校验刚才读取到的 version 值与当前数据库中的 version 值相等
return interceptor;
}
}
注意:如果是单数据源此时分页插件能正常使用,而如果是多数据源,那么就必须添加以下内容,否则分页时查询总数total还是0
2. 多数据源定义:
@Bean(name = "sqlSessionFactoryPop")
public SqlSessionFactory sqlSessionFactoryPop(@Qualifier("dataSourcePop") DataSource dataSource, MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception {
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean ();// 创建SqlSessionFactoryBean实例
factory.setDataSource(dataSource);// 设置数据源
factory.setTypeAliasesPackage("com.epson.vipwp.domain");
Interceptor[] interceptors = new Interceptor[] { mybatisPlusInterceptor };
factory.setPlugins(interceptors);