串列查詢分頁和列舉轉換都是很常用的一個功能,既然專案使用了mybatis-plus,那得聊聊mybatis-plus是如何實作分頁和列舉轉換的,mybatis-plus的框架簡單使用可以查看第六節《spring boot開發web應用--mybatis-plus為簡化而生》,這里不在贅述,
1.實作分頁
(1).添加Bean配置
在專案啟動類中添加@Bean配置
package com.kinglead.demo; ? import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; ? @SpringBootApplication @MapperScan("com.kinglead.demo.mapper") public class App { ? public static void main(String[] args) { SpringApplication.run(App.class, args); } /** * mybatis-plus分頁配置 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 設定請求的頁面大于最大頁后操作, true調回到首頁,false 繼續請求 默認false // paginationInterceptor.setOverflow(false); // 設定最大單頁限制數量,默認 500 條,-1 不受限制 // paginationInterceptor.setLimit(500); // 開啟 count 的 join 優化,只針對部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }
(2).在ServiceImpl實作方法中加入分頁實作Page
package com.kinglead.demo.service.impl; ? import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kinglead.demo.domain.User; import com.kinglead.demo.mapper.UserMapper; import com.kinglead.demo.service.UserService; import org.springframework.stereotype.Service; ? import javax.annotation.Resource; import java.util.List; ? @Service public class UserServiceImpl implements UserService { ? @Resource private UserMapper userMapper; ? @Override public List<User> queryUserList() { //new分頁模型:這里硬編碼,第一頁,每頁5條 //current:當前頁 //size:每頁顯示條數 Page<User> page = new Page<User>(1,5); //使用mybatis-plus公共查詢介面完成串列查詢 Page<User> userPage = userMapper.selectPage(page, null); return userPage.getRecords(); } ? }
(3).測驗:第一頁5條資料
資料庫資料

查詢串列

2.列舉轉換
(1).創建列舉
主要用到2個注解@EnumValue和@JsonValue,@EnumValue注明寫入資料庫欄位值;@JsonValue是Jackson方式帶的注解,注明response回傳值,
package com.kinglead.demo.enums; ? import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; ? public enum GenderEnum { MALE("男","MALE"), FEMALE("女","FEMALE"); ? ? private final String code; ? //@EnumValue注明寫入資料庫欄位值 @EnumValue private final String value; ? GenderEnum(String code, String value) { this.code = code; this.value =https://www.cnblogs.com/kinglead/archive/2020/09/23/ value; } ? //Jackson方式:@JsonValue注明response回傳值 @JsonValue public String getDescription() { return this.code; } }
(2).物體類User
package com.kinglead.demo.domain; ? import com.baomidou.mybatisplus.annotation.TableName; import com.kinglead.demo.enums.GenderEnum; import lombok.Data; ? @Data @TableName(value = "t_user") //指明資料庫表名 public class User { private Long id; private String name; private Integer age; private String email; private GenderEnum gender; }
(3).測驗:性別欄位在資料庫里存的是“MALE”和“FEMALE”,查詢出來的是“男”和“女”
資料庫資料

查詢串列

原始碼github地址:https://github.com/kinglead2012/myblog
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114483.html
標籤:其他
上一篇:XLSReadWriteII無法將單元格設定為STDEV公式
下一篇:我們搞開發的為什么會感覺到累
