昨天就写了个微服务的增删改查
controller层
package com.changgou.goods.controller;
import com.changgou.common.entity.PageResult;
import com.changgou.common.entity.Result;
import com.changgou.common.entity.StatusCode;
import com.changgou.goods.pojo.Brand;
import com.changgou.goods.service.BrandService;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController//@ResponseBody(java对象->json响应数据)+@Controller(表示表现层)
@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查询数据
@GetMapping("/{id}")
public Result findById(@PathVariable Integer id){//用于路径上接收参数
Brand brand = brandService.findById(id);
return new Result(true,StatusCode.OK,"查询成功",brand);
}
//新增品牌
@PostMapping("/add")
public Result add(@RequestBody Brand brand){//前端传来的json->java对象
brandService.add(brand);
return new Result(true,StatusCode.OK,"添加成功");
}
//根据id修改品牌
@PutMapping("/{id}")
public Result update(@RequestBody Brand brand,@PathVariable Integer id){
brand.setId(id);
brandService.update(brand);
return new Result(true,StatusCode.OK,"修改成功");
}
//根据id删除品牌
@DeleteMapping({"/{id}"})
public Result delete(@PathVariable Integer id){
brandService.delete(id);
return new Result(true,StatusCode.OK,"删除成功");
}
//条件搜索+分页查询
@GetMapping("/search/{page}/{size}")
public Result search(@PathVariable Integer page, @PathVariable Integer size, @RequestParam Map searchMap){//指定参数赋值给形参
Page<Brand> pageList = brandService.search(searchMap,page,size);//page对象接收参数
PageResult<Brand> pageResult = new PageResult<>(pageList.getTotal(), pageList.getResult());//pageResult封装对象
return new Result(true,StatusCode.OK,"查询成功",pageResult);//返回前端
}
}
service层
package com.changgou.goods.service;
import com.changgou.goods.pojo.Brand;
import com.github.pagehelper.Page;
import java.util.List;
import java.util.Map;
public interface BrandService {
Brand findById(Integer id);
List<Brand> findAll();
void add(Brand brand);
void update(Brand brand);
void delete(Integer id);
Page<Brand> search(Map searchMap, Integer page, Integer size);
}
package com.changgou.goods.service.impl;
import com.changgou.goods.dao.BrandMapper;
import com.changgou.goods.pojo.Brand;
import com.changgou.goods.service.BrandService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
import java.util.Map;
@Service//表示业务层
public class BrandServiceImpl implements BrandService {
@Autowired
private BrandMapper brandMapper;
@Override
public Brand findById(Integer id) {
return brandMapper.selectByPrimaryKey(id);
}
@Override
public List<Brand> findAll() {
return brandMapper.selectAll();
}
@Override
public void add(Brand brand) {
// brandMapper.insert(brand)
brandMapper.insertSelective(brand);//这种是要做非空判断的
}
@Override
public void update(Brand brand) {
brandMapper.updateByPrimaryKeySelective(brand);
}
@Override
public void delete(Integer id) {
brandMapper.deleteByPrimaryKey(id);
}
@Override
public Page<Brand> search(Map searchMap, Integer page, Integer 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")+"%");//name,%HTC%
}//模糊查询
//品牌首字母
if(searchMap.get("letter")!=null && !"".equals(searchMap.get("letter"))){
criteria.andEqualTo("letter",searchMap.get("letter"));//letter,H
}//精准查询
}
return (Page<Brand>) brandMapper.selectByExample(example);//返回封装对象
}
}
dao层
package com.changgou.goods.dao;
import com.changgou.goods.pojo.Brand;
import tk.mybatis.mapper.common.Mapper;
public interface BrandMapper extends Mapper<Brand> {
}
统一异常处理类
package com.changgou.goods.handler;
import com.changgou.common.entity.Result;
import com.changgou.common.entity.StatusCode;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 统一异常处理类
*/
@ControllerAdvice
public class BaseExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result error(Exception e){
e.printStackTrace();
return new Result(false, StatusCode.ERROR,e.getMessage());
}
}