?TableDataInfo文章來源:http://www.zghlxwxcb.cn/news/detail-664806.html
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 表格分頁數據對象
*
* @author Lion Li
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TableDataInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 總記錄數
*/
private long total;
/**
* 列表數據
*/
private List<T> rows;
/**
* 消息狀態(tài)碼
*/
private int code;
/**
* 消息內容
*/
private String msg;
/**
* 分頁
*
* @param list 列表數據
* @param total 總記錄數
*/
public TableDataInfo(List<T> list, long total) {
this.rows = list;
this.total = total;
}
public static <T> TableDataInfo<T> build(IPage<T> page) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查詢成功");
rspData.setRows(page.getRecords());
rspData.setTotal(page.getTotal());
return rspData;
}
public static <T> TableDataInfo<T> build(List<T> list) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查詢成功");
rspData.setRows(list);
rspData.setTotal(list.size());
return rspData;
}
public static <T> TableDataInfo<T> build(List<T> list, int total) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查詢成功");
rspData.setRows(list);
rspData.setTotal(total);
return rspData;
}
public static <T> TableDataInfo<T> build() {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查詢成功");
return rspData;
}
}
?serviceImpl.selectPageQueryUserList文章來源地址http://www.zghlxwxcb.cn/news/detail-664806.html
@Override
public TableDataInfo<SysUser> selectPageQueryUserList(SysUserBo bo, PageQuery pageQuery) {
if (StrUtil.isNotEmpty(bo.getKey())) {
//如果key值為數字,則按照工號查
if (bo.getKey().matches("^[0-9]+$")) {
bo.setUserName(bo.getKey());
}
//如果key值為中文,則按照姓名查
if (bo.getKey().matches("^[\\u4e00-\\u9fa5]+$")) {
bo.setNickName(bo.getKey());
}
}
//根據公司編碼查詢該公司所有用戶
List<SysUser> firmList = baseMapper.selectUsersByDeptCode(bo);
//如果key值為字母,則按照‘姓’的拼音查,大小寫均可
if (StrUtil.isNotEmpty(bo.getKey()) && bo.getKey().matches("^[a-zA-Z]+$")){
//字母一律轉換為小寫
String name = bo.getKey().toLowerCase(Locale.ROOT);
//存放符合搜索條件的數據
List<SysUser> charNameList = new ArrayList<>();
for (SysUser sysUser:firmList){
//定義surname代表姓氏
char surname = 0;
//挑出nickName第一個字符
surname = sysUser.getNickName().charAt(0);
//挑出第一個字符的拼音
List<Pinyin> pinyins = HanLP.convertToPinyinList(String.valueOf(surname));
for (Pinyin pinyin : pinyins) {
// String s = String.valueOf(pinyin.getShengmu());
// String s1 = String.valueOf(pinyin.getFirstChar());
//獲取純字母的拼音
String s = String.valueOf(pinyin.getPinyinWithoutTone());
//進行匹配
if (s.contains(name)) {
charNameList.add(sysUser);
}
// else {
// continue;
// }
}
}
firmList = charNameList;
}
//如果bo.deptId不為空,則在firmPage(公司內)向下查詢所有子部門用戶
if (bo.getDeptId() != null) {
// 根據deptId查詢所有子部門id
List<Long> firmDeptIdList = baseMapper.selectFirmDeptId(bo.getDeptId());
//根據子部門id篩選firmPage中符合條件的用戶
firmList = firmList.stream()
.filter(user -> firmDeptIdList.contains(user.getDeptId()))
.collect(Collectors.toList());
}
//如果bo.roleId不為空,則在firmPage(公司內)查詢所有與之關聯(lián)用戶
if (bo.getRoleId() != null) {
//根據roleId查詢關聯(lián)的用戶id
List<Long> userIdList = baseMapper.selectUserIdByRoleId(bo.getRoleId());
//根據用戶id篩選firmPage中符合條件的用戶
firmList = firmList.stream()
.filter(user -> userIdList.contains(user.getUserId()))
.collect(Collectors.toList());
}
// 創(chuàng)建Page對象
Page<SysUser> page = new Page<>();
if (pageQuery.getPageNum() != null && pageQuery.getPageSize() != null) {
page.setCurrent(pageQuery.getPageNum());
page.setSize(pageQuery.getPageSize());
// 手動分頁,獲取當前頁的數據列表
int startIndex = (int) ((page.getCurrent() - 1) * page.getSize());
int endIndex = (int) Math.min(startIndex + page.getSize(), firmList.size());
List<SysUser> currentList = firmList.subList(startIndex, endIndex);
// 設置總記錄數和當前頁數據列表
page.setTotal(firmList.size());
page.setRecords(currentList);
} else {
page.setRecords(firmList);
page.setTotal(firmList.size());
}
return TableDataInfo.build(page);
}
到了這里,關于Mybatis-Plus手動分頁的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!