# Mybatis-plus<二>通用CRUD,分頁
阿新 • • 發佈:2021-08-01
Mybatis-plus<二>通用CRUD,分頁
與部落格Mybatis-plus<一>為同一個Springboot專案。
Demo GitHub下載地址:https://github.com/RJvon/Mybatis_plus_demo(包含資料庫建表sql,資料庫資料與原始碼)
Mybatis-plus官網: https://mp.baomidou.com/
未經作者同意請勿轉載
Service CRUD 介面說明
說明:
- 通用 Service CRUD 封裝IService介面,進一步封裝 CRUD 採用
get 查詢單行
remove 刪除
list 查詢集合
page 分頁
Mapper
層避免混淆, - 泛型
T
為任意實體物件 - 物件
Wrapper
為 條件構造器
CRUD介面:
Insert
// @param entity 實體物件
// 插入一條記錄
int insert(T entity);
@Test public void insertTest1() { Employees employees = new Employees(); employees.setId(109); employees.setBirth(LocalDateTime.of(2019, Month.SEPTEMBER, 10, 14, 46, 56)); employees.setName("馮北航"); employees.setSex(false); employees.setSchool("北京航空航天大學"); employees.setTel("12345678910"); int insert = employeesMapper.insert(employees); System.out.println(employees); System.out.println(insert); }
Delete
// 根據 entity 條件,刪除記錄 int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper); employees.setTel("12345676910"); employees.setName("caocao"); QueryWrapper<Employees> wrapper = new QueryWrapper<>(Employees); employeesMapper.delete(wrapper); // 刪除(根據ID 批量刪除) int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); int result = this.employeesMapper.deleteBatchIds(Arrays.asList(105,106)); // 根據 ID 刪除 int deleteById(Serializable id); // 根據 columnMap 條件,刪除記錄,多個條件之間是and關係 int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap); 比如 map.put("name")="陳中山" map.put("tel")="12345676910" 刪除"name"="陳中山";"tel"="12345676910"的物件
@Test
public void testDeleteById(){
// 根據id刪除資料
int result = this.employeesMapper.deleteById(101);
}
@Test
public void testDeleteByMap(){
Map<String,Object> map = new HashMap<>();
map.put("name", "錢北大");
map.put("sex", true);
// 根據map刪除資料,多條件之間是and關係
int result = this.employeesMapper.deleteByMap(map);
}
@Test
public void testDelete(){
//用法一:
QueryWrapper<Employees> wrapper = new QueryWrapper<Employees>();
wrapper.eq("name", "李交通")
.eq("sex", false);
/* //用法二:
Employees employees = new Employees();
employees.setName("孫復旦");
employees.setSex(true);
QueryWrapper<Employees> wrapper = new QueryWrapper<>(employees);*/
// 根據包裝條件做刪除
int result = this.employeesMapper.delete(wrapper);
}
@Test
public void testDeleteBatchIds(){
// 根據id批量刪除資料
int result = this.employeesMapper.deleteBatchIds(Arrays.asList(105,106));
System.out.println("result => " + result);
}
@Test
public void testSelectBatchIds(){
// 根據id批量查詢資料
List<Employees> employees = this.employeesMapper.selectBatchIds(Arrays.asList(2L, 3L, 4L, 100L));
for (Employees e : employees) {
System.out.println(employees);
}
}
Update
// 根據 whereWrapper 條件,更新記錄
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根據 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
@Test
public void updateTest(){
Employees employees = new Employees();
employees.setId(101);
employees.setTel("00000000000");
int i = employeesMapper.updateById(employees);
System.out.println(i);
}
Select
// 根據 ID 查詢
T selectById(Serializable id);
// 根據 entity 條件,查詢一條記錄
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查詢(根據ID 批量查詢)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根據 entity 條件,查詢全部記錄
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查詢(根據 columnMap 條件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根據 Wrapper 條件,查詢全部記錄
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根據 Wrapper 條件,查詢全部記錄。注意: 只返回第一個欄位的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根據 entity 條件,查詢全部記錄(並翻頁)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根據 Wrapper 條件,查詢全部記錄(並翻頁)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根據 Wrapper 條件,查詢總記錄數
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
@Test
public void getSelect1() {
System.out.println(employeesMapper.selectById(101));
}
@Test
public void getSelect2() {
List<Employees> employees = employeesMapper.selectBatchIds(Arrays.asList(101, 102, 103));
for (Employees employee : employees) {
System.out.println(employee);
}
}
@Test
public void testSelectPage(){
Page<Employees> employeesPage = new Page<>(3, 2);
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("sex",true);
Page page = employeesMapper.selectPage(employeesPage, wrapper);
System.out.println("資料總條數: " + page.getTotal());
System.out.println("資料總頁數: " + page.getPages());
System.out.println("當前頁數: " + page.getCurrent());
List records = page.getRecords();
records.forEach(System.out::println);
}
分頁——Springboot中新增
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 新的分頁外掛,一緩和二緩遵循mybatis的規則,需要設定 MybatisConfiguration#useDeprecatedExecutor = false 避免快取出現問題(該屬性會在舊外掛移除後一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
未經作者同意請勿轉載
本文來自部落格園作者:aixueforever,原文連結:https://www.cnblogs.com/aslanvon/p/15086867.html