Loading

品牌增删改查

需求分析

创建商品微服务,实现对品牌表的增删改查功能。具体包括

(1)查询全部列表数据

(2)根据ID查询实体数据

(3)增加

(4)修改

(5)删除

(6)条件查询

(7)分页查询

(8)分页+条件查询

表结构分析

字段名称字段含义字段类型字段长度备注
id 品牌id INT    
name 品牌名称 VARCHAR    
image 品牌图片地址 VARCHAR    
letter 品牌的首字母 CHAR    
seq 排序 INT    

代码实现

品牌列表

(1)在changgou_service_goods_api创建com.changgou.goods.pojo包,包下创建Brand实体类

@Table(name="tb_brand")
public class Brand implements Serializable{
    @Id
    private Integer id;//品牌id
    private String name;//品牌名称
    private String image;//品牌图片地址
    private String letter;//品牌的首字母
    private Integer seq;//排序
    
    // getter and setter  .....(省略)
}

@Table和@Id都是JPA注解,@Table用于配置表与实体类的映射关系,@Id用于标识主键属性。

(2)Dao创建

在changgou_service_goods微服务下创建com.changgou.goods.dao.BrandMapper接口,代码如下:

public interface BrandMapper extends Mapper<Brand> {
}

继承了Mapper接口,就自动实现了增删改查的常用方法。

(3)业务层

创建com.changgou.goods.service.BrandService接口,代码如下:

public interface BrandService {
​
    /***
     * 查询所有品牌
     * @return
     */
  public  List<Brand> findAll();
}

创建com.changgou.goods.service.impl包,包下创建服务实现类 BrandServiceImpl,代码如下:

@Service
public class BrandServiceImpl implements BrandService {
    
    @Autowired
    private BrandMapper brandMapper;
    
    @Override
    public List<Brand> findAll() {
        return brandMapper.selectAll();
    }   
}

(3)控制层

控制层 com.changgou.goods包下创建controller包 ,包下创建类

@RestController
@RequestMapping("/brand")
public class BrandController {
​
    @Autowired
    private BrandService brandService;
​
    @GetMapping
    public Result findAll(){
        List<Brand> brandList = brandService.findAll();
        return new Result(true, StatusCode.OK,"查询成功",brandList) ;
    }
  
}

根据ID查询品牌

(1) 业务层接口

修改com.changgou.goods.service.BrandService接口,添加根据ID查询品牌数据方法,代码如下:

/**
 * 根据ID查询
 * @param id
 * @return
 */
public Brand findById(Integer id);

(2)业务层实现

修改com.changgou.goods.service.impl.BrandServiceImpl新增方法,代码如下:

/**
 * 根据ID查询
 * @param id
 * @return
 */
@Override
public Brand findById(Integer id){
    return  brandMapper.selectByPrimaryKey(id);
}

(3) 控制层

BrandController新增方法

/***
 * 根据ID查询品牌数据
 * @param id
 * @return
 */
@GetMapping("/{id}")
public Result findById(@PathVariable Integer id){
    Brand brand = brandService.findById(id);
    return new Result(true,StatusCode.OK,"查询成功",brand);
}

新增品牌

(1)业务层接口

修改com.changgou.goods.service.BrandService,新增方法

/***
 * 新增品牌
 * @param brand
 */
public void add(Brand brand);

(2)业务层实现

修改com.changgou.goods.service.impl.BrandServiceImpl,新增增加品牌方法代码如下:

/**
 * 增加
 * @param brand
 */
@Override
public void add(Brand brand){
    brandMapper.insertSelective(brand);
}

(3)控制层 BrandController新增方法

/***
 * 新增品牌数据
 * @param brand
 * @return
 */
@PostMapping
public Result add(@RequestBody Brand brand){
    brandService.add(brand);
    return new Result(true,StatusCode.OK,"添加成功");
}

修改品牌

(1) 业务层接口

需改com.changgou.goods.service.BrandService,添加修改品牌方法,代码如下:

/***
 * 修改品牌数据
 * @param brand
 */
public void update(Brand brand);

(2)业务层实现

修改com.changgou.goods.service.impl.BrandServiceImpl,添加修改品牌方法,代码如下:

/**
 * 修改
 * @param brand
 */
@Override
public void update(Brand brand){
    brandMapper.updateByPrimaryKeySelective(brand);
}

(3)控制层

BrandController新增方法

/***
 * 修改品牌数据
 * @param brand
 * @param id
 * @return
 */
@PutMapping(value="/{id}")
public Result update(@RequestBody Brand brand,@PathVariable Integer id){
    brand.setId(id);
    brandService.update(brand);
    return new Result(true,StatusCode.OK,"修改成功");
}

删除品牌

(1)业务层接口

修改com.changgou.goods.service.BrandService,添加删除品牌方法,代码如下:

/***
 * 删除品牌
 * @param id
 */
public void delete(Integer id);

(2)业务层实现

修改com.changgou.goods.service.impl.BrandServiceImpl,新增删除品牌方法,代码如下:

/**
 * 删除
 * @param id
 */
@Override
public void delete(Integer id){
    brandMapper.deleteByPrimaryKey(id);
}

(3)控制层

BrandController新增方法

/***
 * 根据ID删除品牌数据
 * @param id
 * @return
 */
@DeleteMapping(value = "/{id}" )
public Result delete(@PathVariable Integer id){
    brandService.delete(id);
    return new Result(true,StatusCode.OK,"删除成功");
}

品牌列表条件查询

(1) 业务层接口

修改com.changgou.goods.service.BrandService,增加根据条件搜索品牌方法,代码如下:

/***
 * 多条件搜索品牌方法
 * @param searchMap
 * @return
 */
public List<Brand> findList(Map<String, Object> searchMap);

(2)业务层实现

修改com.changgou.goods.service.impl.BrandServiceImpl,添加根据多条件搜索品牌方法的实现,代码如下:

/**
 * 条件查询
 * @param searchMap
 * @return
 */
@Override
public List<Brand> findList(Map<String, Object> searchMap){
    Example example=new Example(Brand.class);
    Example.Criteria criteria = example.createCriteria();
    if(searchMap!=null){
        // 品牌名称
        if(searchMap.get("name")!=null && !"".equals(searchMap.get("name"))){
            criteria.andLike("name","%"+searchMap.get("name")+"%");
        }
        // 品牌的首字母
        if(searchMap.get("letter")!=null && !"".equals(searchMap.get("letter"))){
            criteria.andEqualTo("letter",searchMap.get("letter"));
        }
    }
    return brandMapper.selectByExample(example);
}

(3) 控制层

BrandController新增方法

/***
 * 多条件搜索品牌数据
 * @param searchMap
 * @return
 */
@GetMapping(value = "/search" )
public Result findList(@RequestParam Map searchMap){
    List<Brand> list = brandService.findList(searchMap);
    return new Result(true,StatusCode.OK,"查询成功",list);
}

品牌列表分页查询

(1) 业务层接口 修改com.changgou.goods.service.BrandService添加分页方法,代码如下:

/***
 * 分页查询
 * @param page
 * @param size
 * @return
 */
public Page<Brand> findPage(int page, int size);

(2)业务层实现 修改com.changgou.goods.service.impl.BrandServiceImpl添加分页方法实现,代码如下:

/**
 * 分页查询
 * @param page
 * @param size
 * @return
 */
@Override
public Page<Brand> findPage(int page, int size){
    PageHelper.startPage(page,size);
    return (Page<Brand>)brandMapper.selectAll();
}

(3) 控制层 BrandController新增方法

/***
 * 分页搜索实现
 * @param page
 * @param size
 * @return
 */
@GetMapping(value = "/search/{page}/{size}" )
public Result findPage(@PathVariable  int page, @PathVariable  int size){
    Page<Brand> pageList = brandService.findPage(page, size);
    PageResult pageResult=new PageResult(pageList.getTotal(),pageList.getResult());
    return new Result(true,StatusCode.OK,"查询成功",pageResult);
}

品牌列表条件+分页查询

(1) 业务层接口 修改com.changgou.goods.service.BrandService,增加多条件分页查询方法,代码如下:

/***
 * 多条件分页查询
 * @param searchMap
 * @param page
 * @param size
 * @return
 */
Page<Brand> findPage(Map<String, Object> searchMap, int page, int size);

(2)业务层实现 修改com.changgou.goods.service.impl.BrandServiceImpl,添加多条件分页查询方法代码如下:

/**
     * 条件+分页查询
     * @param searchMap 查询条件
     * @param page 页码
     * @param size 页大小
     * @return 分页结果
     */
@Override
public Page<Brand> findPage(Map<String,Object> searchMap, int page, int size){
    PageHelper.startPage(page,size);
    Example example=new Example(Brand.class);
    Example.Criteria criteria = example.createCriteria();
    if(searchMap!=null){
        // 品牌名称
        if(searchMap.get("name")!=null && !"".equals(searchMap.get("name"))){
            criteria.andLike("name","%"+searchMap.get("name")+"%");
        }
        // 品牌的首字母
        if(searchMap.get("letter")!=null && !"".equals(searchMap.get("letter"))){
            criteria.andEqualTo("letter",searchMap.get("letter"));
        }
    }
    return (Page<Brand>)brandMapper.selectByExample(example);
}

(3)控制层 BrandController新增方法

/***
 * 分页搜索实现
 * @param searchMap
 * @param page
 * @param size
 * @return
 */
@GetMapping(value = "/search/{page}/{size}" )
public Result findPage(@RequestParam Map searchMap, @PathVariable  int page, @PathVariable  int size){
    Page<Brand> pageList = brandService.findPage(searchMap, page, size);
    PageResult pageResult=new PageResult(pageList.getTotal(),pageList.getResult());
    return new Result(true,StatusCode.OK,"查询成功",pageResult);
}

公共异常处理

为了使我们的代码更容易维护,我们创建一个类集中处理异常

在com.changgou.goods.handler包下创建公共异常处理类BaseExceptionHandler

/**
 * 统一异常处理类
 */
@ControllerAdvice
public class BaseExceptionHandler {
    
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result error( Exception e) {
        e.printStackTrace();        
        return new Result(false, StatusCode.ERROR, e.getMessage());
    }
}

 

posted @ 2021-07-21 16:47  1640808365  阅读(133)  评论(0编辑  收藏  举报