mybatis 分页插件和插件的安装方法

今天寻找一个 mybatis 的分页方法,后来寻找到一个不错的插件,顺便记录 mybatis 如何安装插件

分页插件

网上的关于 mybatis 分页插件有很多,最后采用的这个。
ps:mybatis 原本采用的是内存分页。
git地址
maven 依赖

<dependencies>
  ...
    <dependency>
        <groupId>com.github.miemiedev</groupId>
        <artifactId>mybatis-paginator</artifactId>
        <version>1.2.17</version>
    </dependency>
 ...
</dependencies>

安装方法

在 mybatis 配置文件中

<configuration> 
    <plugins> 
        <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> 
            <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/> <!-- 这里填写的是有关于数据库的选择 -->
        </plugin> 
    </plugins> 
</configuration> 

在 spring 配置文件中

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml">
    </property> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mapperLocations"> 
        <list> 
            <value>classpath*:/mybatis/*-*.xml</value> 
        </list> 
    </property> 
    <property name="plugins"> 
        <list> 
            <bean class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> 
                <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect">
                </property> 
            </bean> 

        </list> 
    </property> 
</bean> 

java 配置

@Configuration
public class MyBatisConfig implements TransactionManagementConfigurer {//1

    @Autowired //2
    DruidDataSource druidDataSource;
    private final Log logger = LogFactory.getLog(this.getClass());
    @Bean(name = "sqlSessionFactory")//3
    public SqlSessionFactory sqlSessionFactoryBean() {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(druidDataSource);
        bean.setTypeAliasesPackage("com.xxx.xxx.xxx.domain");
        //添加插件
        OffsetLimitInterceptor interceptor = new OffsetLimitInterceptor();
        Properties properties = new Properties();
        properties.setProperty("dialectClass", "com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect");
        interceptor.setProperties(properties);
        bean.setPlugins(new Interceptor[]{interceptor});
        org.apache.ibatis.session.Configuration ibatisConfiguration = new org.apache.ibatis.session.Configuration();
        ibatisConfiguration.setMapUnderscoreToCamelCase(true);
        bean.setConfiguration(ibatisConfiguration);
        //添加XML目录
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            bean.setMapperLocations(resolver.getResources("classpath:/sqlMapper/*Mapper.xml"));        
            return bean.getObject();
        } catch (Exception e) {
            logger.error("mybatis config error:" + e.getMessage());
            throw new RuntimeException(e);
        }
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        logger.info("SqlSessionTemplate set sqlSessionFactory");
        return new SqlSessionTemplate(sqlSessionFactory);
    }


    @Bean
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        logger.info("DataSourceTransactionManager set datasource");
        return new DataSourceTransactionManager(druidDataSource);

    }
}

支持的数据库

支持的数据库

使用方法

dao

//pageList 继承 List 借口,是由插件自带,PageBounds 也是插件自带
//这里的 dao 层采用借口的形式
@Select("select * from table where name = #{query.name}")
PageList<xxx> selectSellerListByQuery(@Param("query") Query query, PageBounds pageBounds);

service

//page:页数,limit:页大小
PageBounds pageBounds = new PageBounds(page, limit);
//query 是自己编写的类,不影响
PageList<xxx> list = xxxDao.selectXxxListByQuery(query, pageBounds);
//此方法返回总条数
list.getPaginator().getTotalCount()

这个插件还可以选择是否进行排序,或其他单独的参数。

public PageBounds(int page, int limit, Order... order)
public PageBounds(int page, int limit, List<Order> orders)
public PageBounds(int limit)
public PageBounds(Order... order)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值