mybatis-plus使用的代码例子

mybatis-plus分页查询使用例子:

分页查询控制器

/**
* 分页插件配置类
*/
@Configuration
public class PageHelperConfiguration {

/**
* 创建分页插件拦截器对象
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}

}

 

 

/**
* 分页查询品牌
*/
@GetMapping("/brand/page")
public ResponseEntity<PageResult<Brand>> brandPageQuery(
@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "rows",defaultValue = "5") Integer rows,
@RequestParam(value = "key",required = false) String key,
@RequestParam(value = "sortBy",required = false) String sortBy,
@RequestParam(value = "desc",required = false) Boolean desc
){
PageResult<Brand> pageResult = brandService.brandPageQuery(page,rows,key,sortBy,desc);
return ResponseEntity.ok(pageResult);
}
}

 

 

@Service
public class BrandService {
    @Autowired
    private BrandMapper brandMapper;

    public PageResult<Brand> brandPageQuery(Integer page, Integer rows, String key, String sortBy, Boolean desc) {
        //1.封装条件
        //1.1 封装分页条件
        IPage<Brand> iPage = new Page(page,rows);

        //1.2 封装查询条件
        QueryWrapper<Brand> queryWrapper = Wrappers.query();

        //自定义往QueryWrapper对象中封装条件

        //处理key
        if(StringUtils.isNotEmpty(key)){
            //where name like '%O%' or letter='O'
            /**
             * 参数一:字段名称(不是属性名)
             */
            queryWrapper
                    .like("name",key)
                    .or()
                    .eq("letter",key.toUpperCase());
        }

        //处理sortBy和desc
        if(StringUtils.isNotEmpty(sortBy)){
            if(desc){
                //降序
                queryWrapper.orderByDesc(sortBy);
            }else{
                //升序
                queryWrapper.orderByAsc(sortBy);
            }
        }


        //2.执行查询,获取结果
        iPage = brandMapper.selectPage(iPage,queryWrapper);

        //3.处理结果,返回结果
        //3.1 封装PageResult对象
        PageResult<Brand> pageResult = new PageResult<>(iPage.getTotal(),iPage.getPages(),iPage.getRecords());
        //3.2 返回数据
        return pageResult;
    }
}

品牌的保存和中间表的维护

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.leyou.item.mapper.BrandMapper">

    <!--    
        collection: 需要遍历的内容(数组或集合)
        item: 每个元素的别名
        separator: 分隔符
    -->
    <insert id="saveCategoryAndBrand">

        INSERT INTO tb_category_brand(category_id,brand_id) VALUES
        <foreach collection="cids" item="cid" separator=",">
            (#{cid},#{bid})
        </foreach>
    </insert>

</mapper>

 

 @PostMapping("/brand")
    public ResponseEntity<Void> saveBrand(
            Brand brand,
            @RequestParam("cids") List<Long> cids
    ){
        brandService.saveBrand(brand,cids);
        //return ResponseEntity.status(HttpStatus.CREATED).body(null);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }
public void saveBrand(Brand brand, List<Long> cids) {
        try {
            //1.保存品牌表
            brandMapper.insert(brand); //注意:MyBatisPlus在insert方法之后自动把数据库自增值赋值给id

            //2.保存品牌分类中间表
            brandMapper.saveCategoryAndBrand(brand.getId(),cids);
        } catch (Exception e) {
            e.printStackTrace();
            throw new LyException(ExceptionEnum.INSERT_OPERATION_FAIL);
        }
    }
public interface BrandMapper extends BaseMapper<Brand> {
    public void saveCategoryAndBrand(@Param("bid") Long bid,@Param("cids") List<Long> cids);
}
posted @ 2021-03-08 00:03  childrenByCode  阅读(224)  评论(0)    收藏  举报