个人对mybatis-plus总结地址:mybatis-plus 介绍
一、项目结构
二、pom.xml 依赖添加 (这里我是加在krystal_dao的pom.xml里面,单个项目,直接加在pom.xml,多模块根据自己项目情况添加)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0-beta</version>
</dependency>
三、新建MyBatisPlusConfig.java (这里我用专门一个模块添加一些功能代码,里面依赖自己根据报错添加进去即可)
package com.dm.krystal.core.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author krystal
*/
@Configuration
/*@MapperScan("com.dm.krystal")*/ /* KrystalApiApplication在启动文件上写了,这里不加*/
public class MyBatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
}
四、具体代码实现
1.controller
IPage<ExaminationPaperRelevancePO> pageData = examinationPaperRelevanceService.getExaminationPaperPageByQueryVO(page,examinationPaperQueryVO);
2.service
IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, ExaminationPaperQueryVO examinationPaperQueryVO);
3.serviceImp
@Override
public IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, ExaminationPaperQueryVO examinationPaperQueryVO) {
return this.baseMapper.getExaminationPaperPageByQueryVO(page,examinationPaperQueryVO);
}
4.dao
IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, @Param("examinationPaperQueryVO")ExaminationPaperQueryVO examinationPaperQueryVO);
5. .xml
<select id="getExaminationPaperPageByQueryVO" resultType="com.eebbk.core.pojo.vo.ExaminationPaperCatalogVO">
select
a.id,a.paper_id,a.publisher_id,
a.publisher_name,a.grade_id,a.grade_name,
a.semester_id,a.semester_name,
a.subject_id,a.section_id,a.source_type,
a.province_id,a.province_name,a.city_id,
a.city_name,a.`order`,a.staged_type as stageTypeId,a.school_type
from t_examination_paper_relevance a
</select>
五、sql 打印
结果
六、自定义分页(已有100条数据,每次截取十条)
IPage<ExaminationPaperPO> pageData = PageUtil.listToPage(paperList,page.getCurrent(),page.getSize());
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.LongAccumulator;
@Slf4j
public class PageUtil {
public static <T> IPage<T> listToPage(List<T> list, long pageNum, long pageSize){
IPage<T> iPage = new Page<>(pageNum,pageSize);
iPage.setTotal(list.size());
int startIndex = (int)((pageNum - 1) * pageSize);
if(null == list || list.isEmpty() || startIndex > list.size()){
iPage.setRecords(new ArrayList<>());
}
else {
int toIndex = (int)(pageNum * pageSize);
iPage.setRecords(list.subList(startIndex,toIndex > list.size() ? list.size() : toIndex));
}
return iPage;
}
}