SpringCloudAlibaba云商场-基础数据处理(二)

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

1.MyBatis Plus 增删改查操作案例

创建一个品牌操作的功能,实现增删改查,分别创建modelmapperservicecontroller

MyBatis Plus提供了很多的通用方法

mapper(接口)->extends BaseMapper【增删改查】
service(接口)->extends IService【增删改查】
serviceImpl->extends ServiceImpl【增删改查】

这点儿就比之前的MyBatis好很多,简单的sql语句不需要我们再去重复写了。

1.1Mapper创建

mall-goods-service创建com.xz.mall.goods.mapper.BrandMapper接口,代码如下:

public interface BrandMapper extends BaseMapper<Brand> {
}

BaseMapper接口.jpg 从继承的这个BaseMapper接口可以看到,它里面已经存在了很多常见的数据库操作方法,可以大幅提高开发速率

1.2Service创建

mall-goods-service创建com.xz.mall.goods.service.BrandService接口,代码如下:

public interface BrandService extends IService<Brand> {
}

mall-goods-service创建com.xz.mall.goods.service.impl.BrandServiceImpl实现类,代码如下:

@Service
public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements BrandService {
}

IService.jpg

ServiceImpl.jpg 从继承的IService 和 ServiceImpl来看,里面已经创建好了很多常用的增删改查方法,这些足够我们来使用了,几乎不需要再写了

1.3增删改功能

增删改功能在IServiceServiceImpl中已经全部存在, 不需要额外添加方法,只需要在Controller调用即可。

mall-goods-service创建com.xz.mall.goods.controller.BrandController,代码如下:

@RestController
@RequestMapping(value = "/brand")
public class BrandController {

    @Autowired
    private BrandService brandService;

    /**
     * 增加品牌
     * @param brand
     * @return
     */
    @PostMapping
    public RespResult add(@RequestBody Brand brand) {
        brandService.save(brand);
        return RespResult.ok();
    }

    /**
     * 修改品牌
     * @param brand
     * @return
     */
    @PutMapping
    public RespResult update(@RequestBody Brand brand) {
        brandService.updateById(brand);
        return RespResult.ok();
    }

    /**
     * 删除品牌
     * @param brand
     * @return
     */
    @DeleteMapping("/{id}")
    public RespResult delete(@PathVariable(value = "id") Integer id) {
        brandService.removeById(id);
        return RespResult.ok();
    }


}

写好了,启动这个mall-goods-service,进行postman测试

新增Brand 新增brand.jpg 更新Brand 更新Brand.jpg 根据id删除Brand 删除Brand根据id.jpg

1.4条件查询/分页查询

条件查询需要封装条件信息,MyBatis Plus提供了条件封装对象Wrapper(它的子类QueryWrapper可以直接使用),我们可以用它的子类QueryWrapper实现封装查询条件。

1.4.1条件查询

BrandService中创建如下方法:

List<Brand> queryList(Brand brand);

BrandServiceImpl中创建条件查询方法实现(不要忘了注入brandMapper):

@Autowired
private BrandMapper brandMapper;

/**
 * 条件查询
 * @param brand
 * @return
 */
@Override
public List<Brand> queryList(Brand brand) {
    //条件包装对象
    QueryWrapper<Brand> queryWrapper = new QueryWrapper<>();
    //根据name查询brand like模糊查询
    queryWrapper.like("name", brand.getName());
    //根据initial查询 eq等值查询
    queryWrapper.eq("initial", brand.getInitial());

    return brandMapper.selectList(queryWrapper);
}

BrandController中创建条件查询方法:

/**
 * 条件查询
 * @return
 */
@PostMapping(value = "/search")
public RespResult<List<Brand>> queryList(@RequestBody Brand brand) {
    List<Brand> brands = brandService.queryList(brand);
    return RespResult.ok(brands);
}

postman测试一下

根据条件查询Brand.jpg

1.4.2分页查询

BrandService中创建如下方法:

Page<Brand> queryPageList(Brand brand, Long currentPage, Long size);

BrandServiceImpl中创建条件查询方法实现(不要忘了注入brandMapper):

/**
 * 分页查询
 * @param brand
 * @param currentPage
 * @param size
 * @return
 */
@Override
public Page<Brand> queryPageList(Brand brand, Long currentPage, Long size) {
    //条件包装对象
    QueryWrapper<Brand> queryWrapper = new QueryWrapper<>();
    //根据name查询brand like模糊查询
    queryWrapper.like("name", brand.getName());

    return brandMapper.selectPage(new Page<Brand>(currentPage, size),queryWrapper);
}

BrandController中创建条件查询方法:

/**
 * 分页查询
 * @param page
 * @param size
 * @param brand
 * @return
 */
@PostMapping(value = "/search/{page}/{size}")
public RespResult<List<Brand>> queryList(
        @PathVariable(value = "page") Long page,
        @PathVariable(value = "size") Long size,
        @RequestBody Brand brand) {
    Page<Brand> brandPage = brandService.queryPageList(brand, page, size);
    return RespResult.ok(brandPage);
}

注意要增加分页拦截器 在MallGoodsApplication中创建分页拦截器Bean,代码如下:

/**
 * 分页拦截器
 * @return
 */
@Bean
public PaginationInterceptor paginationInterceptor() {
    PaginationInterceptor pageInterceptor = new PaginationInterceptor();
    //设置数据库类型
    pageInterceptor.setDbType(DbType.MYSQL);
    return pageInterceptor;
}

postman测试一下

分页条件查询Brand1.jpg

分页条件查询Brand2.jpg

总结:本篇主要讲述了一下MyBatis Plus的增删改查操作案例。

猜你喜欢

转载自juejin.im/post/7127532664780750861