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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章