商品微服务-品牌增删改查
创建商品微服务,实现对品牌表的增删改查功能。具体包括
- (1)查询全部列表数据
- (2)根据ID查询实体数据
- (3)增加
- (4)修改
- (5)删除
- (6)条件查询
- (7)分页查询
- (8)分页+条件查询
- (9)公共异常处理
微服务商品的增删改查
- (1)TestGoodService
- (2)GoodService,GoodServiceImpl
- (3)GoodDao
- (4)GoodController
- (4)postman
TestGoodService
@SpringBootTest
public class TestBrandService {
@Autowired
BrandService brandService;
@Test
public void test01() {
//查所有
// List<Brand> list = brandService.findAll();
// System.out.println(list.size());
//查一条
// Brand brand = brandService.findById(7817);
// System.out.println(brand.getName());
//删除
brandService.deleteById(7817);
}
@Test
public void test02() {
//添加一条
Brand brand = new Brand();
brand.setName("JZG牌");
brand.setId(7817);
//brandService.saveBrand(brand);
brandService.updateBrand(brand);
}
//搜索,就是在一个高级搜索页面的一个表单里面输入搜索信息
@Test
public void test03() {
Brand brand = new Brand(); //null+"" "null"
//brand.setId(7817);//and
brand.setName("谷");
//按条件查询
List<Brand> list = brandService.findList(brand);
for (Brand b : list) {
System.out.println(b.getName());
}
}
//分页,如果搜索的记录是多条的话,我们需要对结果进行分页
@Test
public void test04() {
Brand brand = new Brand(); //null+"" "null"
brand.setName("T");
//按条件查询
PageInfo<Brand> pageInfo= brandService.findPage(brand,2,10);
//数据库中带T的数据有30条
for (Brand b : pageInfo.getList()) {
System.out.println(b.getName());
}
}
}
BrandService,BrandServiceImpl
public interface BrandService {
List<Brand> findAll();
Brand findById(int id);
void deleteById(int id);
void saveBrand(Brand brand);
void updateBrand(Brand brand);
List<Brand> findList(Brand brand);
PageInfo<Brand> findPage(Brand brand, int curr, int pageSize);
}
@Service
public class BrandServiceImpl implements BrandService {
@Autowired
BrandDao brandDao;
@Override
public List<Brand> findAll() {
return brandDao.selectAll();
}
@Override
public Brand findById(int id) {
return brandDao.selectByPrimaryKey(id);
}
@Override
public void deleteById(int id) {
brandDao.deleteByPrimaryKey(id);
}
@Override
public void saveBrand(Brand brand) {
brandDao.insert(brand);
}
@Override
public void updateBrand(Brand brand) {
brandDao.updateByPrimaryKey(brand);
}
@Override
public List<Brand> findList(Brand brand) {
//brand看表单输入的对象
Example example = getExample(brand);
return brandDao.selectByExample(example);
}
private Example getExample(Brand brand){
//Example 表示高级搜索的条件
Example example = new Example(Brand.class);//参1 对应 tb_brand
//高级搜索页面输入的值作为条件 where
Example.Criteria criteria = example.createCriteria();
if (brand != null) {
//如果用户在高级搜索表单里面有输入值 ,表示用户在按该条件查找
//名称
if (!StringUtils.isEmpty(brand.getName())) {
criteria.andLike("name", "%" + brand.getName() + "%");
}
//图片
if (!StringUtils.isEmpty(brand.getImage() )) {
criteria.andLike("image", "%" + brand.getImage() + "%");
}
//字母
if (!StringUtils.isEmpty(brand.getLetter() )) {
//and letter like '%A%'
criteria.andLike("letter", "%" + brand.getLetter() + "%");
}
//id
if (!StringUtils.isEmpty(brand.getId() )) {
//null +"" => "null"
criteria.andEqualTo("id", brand.getId());
}
//seq
if (!StringUtils.isEmpty(brand.getSeq())) {
criteria.andEqualTo("seq", brand.getSeq());
}
}
return example;
}
@Override
public PageInfo<Brand> findPage(Brand brand, int curr, int pageSize) {
//分页,使用了mybatis的分页插件
PageHelper.startPage(curr,pageSize); //limit curr,pageSize
//查询
Example example = getExample(brand);
List<Brand> list = brandDao.selectByExample(example);
PageInfo<Brand> pi = new PageInfo<>(list);
return pi;
}
}
if (!StringUtils.isEmpty(brand.getSeq()))
正确if (!StringUtils.isEmpty(brand.getSeq()+""))
错误得出null+"" 变成 “null”
BrandDao
public interface BrandDao extends Mapper<Brand> {
}
- Mapper要导入的不是springmybatis的,而是tkmybatis
- Mapper里面包含常用的方法,添加,修改,删除,查询等
BrandController
@RestController
@RequestMapping("/brands")
@Slf4j
public class BrandController {
@Autowired
BrandService brandService;
//@RequestMapping(path = "",method = {RequestMethod.GET})
@GetMapping //是上面注解的简化
public Object getAll() {
List<Brand> list = brandService.findAll();
return new Result<Brand>(true, StatusCode.OK, "查询成功", list);
}
@GetMapping(path = "/{id}")
public Object getOne(@PathVariable Integer id) {
Brand brand = brandService.findById(id);
return new Result<Brand>(true, StatusCode.OK, "查询成功", brand);
}
@DeleteMapping(path = "/{id}")
public Object deleteOne(@PathVariable Integer id) {
brandService.deleteById(id);
return new Result<Brand>(true, StatusCode.OK, "删除成功");
}
@PostMapping
public Object addOne(@RequestBody Brand brand) {
//@RequestBody将接收到json中的数据存到brand对象
brandService.saveBrand(brand);
return new Result<Brand>(true, StatusCode.OK, "添加成功");
}
@PutMapping
public Object updateOne(@RequestBody Brand brand) {
brandService.updateBrand(brand);
return new Result<Brand>(true, StatusCode.OK, "修改成功");
}
@GetMapping(path="/search")
public Object searchList(@RequestBody Brand brand) {
List<Brand> list = brandService.findList(brand);
return new Result<Brand>(true, StatusCode.OK, "查询成功",list);
}
@GetMapping(path="/search/{curr}/{pageSize}")
public Object searchPage(@RequestBody Brand brand,@PathVariable int curr,@PathVariable int pageSize) {
//按条件查询
PageInfo<Brand> pageInfo= brandService.findPage(brand,curr,pageSize);
return new Result<Brand>(true, StatusCode.OK, "查询成功",pageInfo);
}
}
- @GetMapping 是
@RequestMapping(path = "",method = {RequestMethod.GET})
简化 - springmvc支持restful的地址命名 @DeleteMapping @PutMapping等
- url可以带多个简单的
@GetMapping(path="/search/{curr}/{pageSize}")
public Object searchPage(@RequestBody Brand brand,@PathVariable int curr,@PathVariable int pageSize)