Mybatis-plus<二>通用CRUD,分頁


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);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM