package com.lz.homedecoration.common.bean;
public class CustomException extends RuntimeException {
public CustomException(String message){
super(message);}}
4.2 自定义分页实体类:
package com.lz.homedecoration.common.bean;import java.util.List;
public class PageResult<T>{
private List<T> list;
private long count;
public PageResult(List<T> list, long count){
this.list = list;
this.count = count;}
public PageResult(){}
public List<T>getList(){return list;}
public void setList(List<T> list){
this.list = list;}
public long getCount(){return count;}
public void setCount(long count){
this.count = count;}}
4.3 swagger配置类:
package com.lz.homedecoration.common.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.service.ApiInfo;import springfox.documentation.service.Contact;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket buildDocket(){return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInf())
.select()
.apis(RequestHandlerSelectors.basePackage("com.lz.homedecoration"))
.paths(PathSelectors.any())
.build();}
private ApiInfo buildApiInf(){return new ApiInfoBuilder()
.title("系统API文档")
.contact(new Contact("hong", "/", "10000@qq.com"))
.version("1.0")
.build();}}
4.4 controller的基类:
package com.lz.homedecoration.common.controller;import com.lz.homedecoration.common.bean.PageResult;import com.lz.homedecoration.common.request.PageReq;import com.lz.homedecoration.common.response.ResultRes;import com.lz.homedecoration.entity.User;import org.springframework.web.bind.annotation.*;import java.util.List;
public abstract class BaseController<T>{
@GetMapping("/list")
public abstract ResultRes list();
@GetMapping("/get/{id}")
public abstract ResultRes get(@PathVariable Long id);
@PostMapping("/add")
public abstract ResultRes add(@RequestBody User user);
@RequestMapping(value ="/update",method = RequestMethod.PATCH)
public abstract ResultRes update(@RequestBody User user);
@RequestMapping(value ="/delete/{id}",method = RequestMethod.DELETE)
public abstract ResultRes delete(@PathVariable Long id) throws Exception;
@PostMapping("/pageList")
public abstract ResultRes pageList(@RequestBody PageReq pageReq);}
4.5 dao的基类:
package com.lz.homedecoration.common.dao;import com.lz.homedecoration.common.request.PageReq;import java.io.Serializable;import java.util.List;
public interface BaseDao<T,PK extends Serializable>{
List<T> list();
T get(PK id);
int add(T t);
int delete(PK id);
int update(T t);
List<T> page(PageReq<T> t);
long count(PageReq<T> t);}
4.6 ControllerAdvice异常拦截类:
package com.lz.homedecoration.common.exception;import com.lz.homedecoration.common.response.ResultRes;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class ExceptionHandle {
@ExceptionHandler(Exception.class)
@ResponseBody
public ResultRes exceptionHandle(Exception e){return ResultRes.fail(e.getMessage());}}
4.7 分页入参类封装:
package com.lz.homedecoration.common.request;
public class PageReq<T>{
private T parameter;
private long page;
private long pageSize;
private long startRow;
public T getParameter(){return parameter;}
public void setParameter(T parameter){
this.parameter = parameter;}
public long getPage(){
if(page<=0){
this.setPage(1);}return page;}
public void setPage(long page){
this.page = page;}
public long getPageSize(){
if(pageSize==0){
this.setPageSize(10);}return pageSize;}
public void setPageSize(long pageSize){
this.pageSize = pageSize;}
public long getStartRow(){return(this.page-1)*pageSize;}
public void setStartRow(long startRow){
this.startRow = startRow;}}
4.8 接口响应结果类:
package com.lz.homedecoration.common.response;import lombok.Data;
@Data
public class ResultRes {
private Object data;
private String message;
private int code;
public ResultRes(Object data, String message, int code){
this.data = data;
this.message = message;
this.code = code;}
public static ResultRes success(Object data, String message, int code){
ResultRes resultRes = new ResultRes(data,message,code);return resultRes;}
public static ResultRes success(Object data,String message){
ResultRes resultRes = new ResultRes(data,message,1);return resultRes;}
public static ResultRes success(Object data){
ResultRes resultRes = new ResultRes(data,"操作成功",1);return resultRes;}
public static ResultRes success(){
ResultRes resultRes = new ResultRes(null,"操作成功",1);return resultRes;}
public static ResultRes fail(Object data,String message, int code){
ResultRes resultRes = new ResultRes(data,message,code);return resultRes;}
public static ResultRes fail(Object data,String message){
ResultRes resultRes = new ResultRes(data,message,0);return resultRes;}
public static ResultRes fail(Object data){
ResultRes resultRes = new ResultRes(data,"操作失败",0);return resultRes;}
public static ResultRes fail(){
ResultRes resultRes = new ResultRes(null,"操作失败",0);return resultRes;}}
4.9 service基类:
package com.lz.homedecoration.common.service;import com.lz.homedecoration.common.bean.PageResult;import com.lz.homedecoration.common.request.PageReq;import java.io.Serializable;import java.util.List;
public interface BaseService<T,PK extends Serializable>{
List<T> list();
T get(PK id);
int add(T t);
int delete(PK id);
int update(T t);
PageResult<T> pageList(PageReq<T> pageReq);}
4.10 serviceImpl基类封装:
package com.lz.homedecoration.common.service.impl;import com.lz.homedecoration.common.bean.PageResult;import com.lz.homedecoration.common.dao.BaseDao;import com.lz.homedecoration.common.request.PageReq;import com.lz.homedecoration.common.service.BaseService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.io.Serializable;import java.util.List;
public class BaseServiceImpl<T, PK extends Serializable> implements BaseService<T, PK>{
@Autowired
BaseDao<T, PK> baseDao;
public List<T>list(){return baseDao.list();}
@Override
public T get(PK id){return(T) baseDao.get(id);}
@Override
public int add(T t){return baseDao.add(t);}
@Override
public int delete(PK id){return baseDao.delete(id);}
@Override
public int update(T t){return baseDao.update(t);}
@Override
public PageResult<T> pageList(PageReq<T> pageReq){
PageResult<T> pageResult = new PageResult<T>();
pageResult.setList(baseDao.page(pageReq));
long count = baseDao.count(pageReq);
pageResult.setCount(count);return pageResult;}}
4.11 日志打印工具类:
package com.lz.homedecoration.common.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;
public class CommonLogUtil {
public static Logger logger = LoggerFactory.getLogger(CommonLogUtil.class);}
4.12 用户的controller层,基础controller的基类并实现实基类的实现。
package com.lz.homedecoration.controller;import com.lz.homedecoration.common.bean.PageResult;import com.lz.homedecoration.common.controller.BaseController;import com.lz.homedecoration.common.request.PageReq;import com.lz.homedecoration.common.response.ResultRes;import com.lz.homedecoration.entity.User;import com.lz.homedecoration.service.UserService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import com.lz.homedecoration.common.util.CommonLogUtil;
@RestController
@RequestMapping("/user")
@Api(value ="用户")
public class UserController extends BaseController<User>{
@Autowired
UserService userService;
@ApiOperation(value ="获取用户列表", notes ="获取用户列表")
@Override
public ResultRes list(){return ResultRes.success(userService.list());}
@ApiOperation(value ="获取用户信息", notes ="根据用户id获取用户信息")
@ApiImplicitParam(name ="id", value ="用户id", required = true, dataType ="Long", paramType ="path")
@Override
public ResultRes get(@PathVariable Long id){
User user = userService.get(id);return ResultRes.success(user);}
@Override
public ResultRes add(@RequestBody User user){
userService.add(user);return ResultRes.success();}
@Override
public ResultRes update(@RequestBody User user){
userService.update(user);return ResultRes.success();}
@Override
public ResultRes delete(@PathVariable Long id){
int count = userService.delete(id);
if(count !=0){return ResultRes.success();}else {
CommonLogUtil.logger.info("---------没有相关id: "+id+"的数据-------------");
throw new RuntimeException("没有相关id: "+id+"的数据");}}
@Override
public ResultRes pageList(@RequestBody PageReq pageReq){
PageResult<User> pageResult = userService.pageList(pageReq);return ResultRes.success(pageResult);}}