From 57a7ec6424a287d8d857d99b1488b3b2ce74ff6c Mon Sep 17 00:00:00 2001 From: 安瑾然 <107107765@qq.com> Date: 星期一, 11 七月 2022 17:44:12 +0800 Subject: [PATCH] 统一异常拦截,mybatis配置 --- src/main/java/com/example/jz/dao/CauseDao.java | 15 ++ src/main/java/com/example/jz/enums/BusinessHttpStatus.java | 58 +++++++++ src/main/java/com/example/jz/modle/entity/Cause.java | 33 ++--- src/main/java/com/example/jz/exception/BusinessException.java | 46 +++++++ src/main/java/com/example/jz/modle/entity/Announcement.java | 5 src/main/java/com/example/jz/controller/CauseController.java | 38 +++--- src/main/java/com/example/jz/service/impl/CauseServiceImpl.java | 19 +++ pom.xml | 9 + src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java | 39 ++++++ /dev/null | 19 --- src/main/resources/application.properties | 2 src/main/java/com/example/jz/config/MybatisPlusConfig.java | 24 ++++ src/main/java/com/example/jz/JzApplication.java | 2 src/main/java/com/example/jz/controller/GroupUserController.java | 2 src/main/java/com/example/jz/service/CauseService.java | 15 ++ src/main/java/com/example/jz/controller/AnnouncementController.java | 9 16 files changed, 264 insertions(+), 71 deletions(-) diff --git a/pom.xml b/pom.xml index 23a3361..5bb23bd 100644 --- a/pom.xml +++ b/pom.xml @@ -48,12 +48,17 @@ <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> - <version>2.9.2</version> + <version>3.0.0</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> - <version>1.9.3</version> + <version>1.9.6</version> + </dependency> + <dependency> + <groupId>cn.hutool</groupId> + <artifactId>hutool-all</artifactId> + <version>5.8.3</version> </dependency> </dependencies> diff --git a/src/main/java/com/example/jz/JzApplication.java b/src/main/java/com/example/jz/JzApplication.java index 0cb7ae9..838dcc3 100644 --- a/src/main/java/com/example/jz/JzApplication.java +++ b/src/main/java/com/example/jz/JzApplication.java @@ -1,9 +1,11 @@ package com.example.jz; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication +@MapperScan("com.example.jz.dao") public class JzApplication { public static void main(String[] args) { diff --git a/src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java b/src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java new file mode 100644 index 0000000..c153ac9 --- /dev/null +++ b/src/main/java/com/example/jz/config/DefaultExceptionHandlerConfig.java @@ -0,0 +1,39 @@ +package com.example.jz.config; + +import com.example.jz.enums.BusinessHttpStatus; +import com.example.jz.exception.BusinessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 鑷畾涔夐敊璇鐞嗗櫒 + */ +@Controller +@RestControllerAdvice +public class DefaultExceptionHandlerConfig { + + + @ExceptionHandler(BindException.class) + public ResponseEntity<String> bindExceptionHandler(BindException e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getBindingResult().getFieldErrors().get(0).getDefaultMessage()); + + } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseEntity<String> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getBindingResult().getFieldErrors().get(0).getDefaultMessage()); + } + + @ExceptionHandler(BusinessException.class) + public ResponseEntity<String> unauthorizedExceptionHandler(BusinessException e) { + e.printStackTrace(); + return ResponseEntity.status(e.getHttpStatusCode()).body(e.getMessage()); + } +} diff --git a/src/main/java/com/example/jz/config/MybatisPlusConfig.java b/src/main/java/com/example/jz/config/MybatisPlusConfig.java new file mode 100644 index 0000000..24e21b7 --- /dev/null +++ b/src/main/java/com/example/jz/config/MybatisPlusConfig.java @@ -0,0 +1,24 @@ +package com.example.jz.config; + +import com.baomidou.mybatisplus.core.injector.ISqlInjector; +import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan({"com.example.jz.dao"}) +public class MybatisPlusConfig { + /** + * 鍒嗛〉鎻掍欢 + * @return PaginationInterceptor + */ + @Bean + @ConditionalOnMissingBean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + +} diff --git a/src/main/java/com/example/jz/controller/AnnouncementController.java b/src/main/java/com/example/jz/controller/AnnouncementController.java index 833c767..8de6c43 100644 --- a/src/main/java/com/example/jz/controller/AnnouncementController.java +++ b/src/main/java/com/example/jz/controller/AnnouncementController.java @@ -1,13 +1,12 @@ package com.example.jz.controller; - - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.jz.modle.entity.Announcement; import com.example.jz.service.AnnouncementService; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -32,13 +31,13 @@ /** * 鍒嗛〉鏌ヨ鎵�鏈夋暟鎹� * - * @param page 鍒嗛〉瀵硅薄 + * @param page 鍒嗛〉瀵硅薄 * @param announcement 鏌ヨ瀹炰綋 * @return 鎵�鏈夋暟鎹� */ @GetMapping - public R selectAll(Page<Announcement> page, Announcement announcement) { - return success(this.announcementService.page(page, new QueryWrapper<>(announcement))); + public ResponseEntity<Page<Announcement>> selectAll(Page<Announcement> page, Announcement announcement) { + return ResponseEntity.ok(this.announcementService.page(page, new QueryWrapper<>(announcement))); } /** diff --git a/src/main/java/com/example/jz/controller/CaseController.java b/src/main/java/com/example/jz/controller/CauseController.java similarity index 60% rename from src/main/java/com/example/jz/controller/CaseController.java rename to src/main/java/com/example/jz/controller/CauseController.java index a4eaaac..ec40390 100644 --- a/src/main/java/com/example/jz/controller/CaseController.java +++ b/src/main/java/com/example/jz/controller/CauseController.java @@ -1,13 +1,11 @@ package com.example.jz.controller; - - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.example.jz.modle.entity.Case; -import com.example.jz.service.CaseService; +import com.example.jz.modle.entity.Cause; +import com.example.jz.service.CauseService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -15,30 +13,30 @@ import java.util.List; /** - * (Case)琛ㄦ帶鍒跺眰 + * (Cause)琛ㄦ帶鍒跺眰 * * @author makejava - * @since 2022-07-11 16:35:56 + * @since 2022-07-11 16:55:40 */ @RestController -@RequestMapping("case") -public class CaseController extends ApiController { +@RequestMapping("cause") +public class CauseController extends ApiController { /** * 鏈嶅姟瀵硅薄 */ @Resource - private CaseService caseService; + private CauseService causeService; /** * 鍒嗛〉鏌ヨ鎵�鏈夋暟鎹� * * @param page 鍒嗛〉瀵硅薄 - * @param case 鏌ヨ瀹炰綋 + * @param cause 鏌ヨ瀹炰綋 * @return 鎵�鏈夋暟鎹� */ @GetMapping - public R selectAll(Page<Case> page, Case case) { - return success(this.caseService.page(page, new QueryWrapper<>(case))); + public R selectAll(Page<Cause> page, Cause cause) { + return success(this.causeService.page(page, new QueryWrapper<>(cause))); } /** @@ -49,29 +47,29 @@ */ @GetMapping("{id}") public R selectOne(@PathVariable Serializable id) { - return success(this.caseService.getById(id)); + return success(this.causeService.getById(id)); } /** * 鏂板鏁版嵁 * - * @param case 瀹炰綋瀵硅薄 + * @param cause 瀹炰綋瀵硅薄 * @return 鏂板缁撴灉 */ @PostMapping - public R insert(@RequestBody Case case) { - return success(this.caseService.save(case)); + public R insert(@RequestBody Cause cause) { + return success(this.causeService.save(cause)); } /** * 淇敼鏁版嵁 * - * @param case 瀹炰綋瀵硅薄 + * @param cause 瀹炰綋瀵硅薄 * @return 淇敼缁撴灉 */ @PutMapping - public R update(@RequestBody Case case) { - return success(this.caseService.updateById(case)); + public R update(@RequestBody Cause cause) { + return success(this.causeService.updateById(cause)); } /** @@ -82,7 +80,7 @@ */ @DeleteMapping public R delete(@RequestParam("idList") List<Long> idList) { - return success(this.caseService.removeByIds(idList)); + return success(this.causeService.removeByIds(idList)); } } diff --git a/src/main/java/com/example/jz/controller/GroupUserController.java b/src/main/java/com/example/jz/controller/GroupUserController.java index 0a42557..53a7ea7 100644 --- a/src/main/java/com/example/jz/controller/GroupUserController.java +++ b/src/main/java/com/example/jz/controller/GroupUserController.java @@ -1,7 +1,5 @@ package com.example.jz.controller; - - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.R; diff --git a/src/main/java/com/example/jz/dao/CaseDao.java b/src/main/java/com/example/jz/dao/CaseDao.java deleted file mode 100644 index 329b3f1..0000000 --- a/src/main/java/com/example/jz/dao/CaseDao.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.jz.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.example.jz.modle.entity.Case; - -/** - * (Case)琛ㄦ暟鎹簱璁块棶灞� - * - * @author makejava - * @since 2022-07-11 16:35:56 - */ -public interface CaseDao extends BaseMapper<Case> { - -} - diff --git a/src/main/java/com/example/jz/dao/CauseDao.java b/src/main/java/com/example/jz/dao/CauseDao.java new file mode 100644 index 0000000..5161083 --- /dev/null +++ b/src/main/java/com/example/jz/dao/CauseDao.java @@ -0,0 +1,15 @@ +package com.example.jz.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.jz.modle.entity.Cause; + +/** + * (Cause)琛ㄦ暟鎹簱璁块棶灞� + * + * @author makejava + * @since 2022-07-11 16:55:40 + */ +public interface CauseDao extends BaseMapper<Cause> { + +} + diff --git a/src/main/java/com/example/jz/enums/BusinessHttpStatus.java b/src/main/java/com/example/jz/enums/BusinessHttpStatus.java new file mode 100644 index 0000000..acb2208 --- /dev/null +++ b/src/main/java/com/example/jz/enums/BusinessHttpStatus.java @@ -0,0 +1,58 @@ +package com.example.jz.enums; + +public enum BusinessHttpStatus { + + // 鏈櫥褰� + UNAUTHORIZED(401, "鏈巿鏉�"); + + private final int value; + + private final String msg; + + + BusinessHttpStatus(int value, String msg) { + this.value = value; + this.msg = msg; + } + + + /** + * Return the integer value of this status code. + */ + public int value() { + return this.value; + } + + /** + * Return the msg of this status code. + */ + public String getMsg() { + return msg; + } + + /** + * Return a string representation of this status code. + */ + @Override + public String toString() { + return this.value + " " + name(); + } + + + public static BusinessHttpStatus valueOf(int statusCode) { + BusinessHttpStatus status = resolve(statusCode); + if (status == null) { + throw new IllegalArgumentException("娌℃湁鎵惧埌璇ttp鐘舵�佺爜鍖呭惈鐘舵�� [" + statusCode + "]"); + } + return status; + } + + public static BusinessHttpStatus resolve(int statusCode) { + for (BusinessHttpStatus status : values()) { + if (status.value == statusCode) { + return status; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/jz/exception/BusinessException.java b/src/main/java/com/example/jz/exception/BusinessException.java new file mode 100644 index 0000000..f4780b1 --- /dev/null +++ b/src/main/java/com/example/jz/exception/BusinessException.java @@ -0,0 +1,46 @@ +package com.example.jz.exception; + +import com.example.jz.enums.BusinessHttpStatus; +import org.springframework.http.HttpStatus; + +public class BusinessException extends RuntimeException{ + + /** + * + */ + private static final long serialVersionUID = -4137688758944857209L; + + /** + * http鐘舵�佺爜 + */ + private Integer httpStatusCode; + + + /** + * @param httpStatus http鐘舵�佺爜 + */ + public BusinessException(BusinessHttpStatus httpStatus) { + super(httpStatus.getMsg()); + this.httpStatusCode = httpStatus.value(); + } + + /** + * @param httpStatus http鐘舵�佺爜 + */ + public BusinessException(BusinessHttpStatus httpStatus, String msg) { + super(msg); + this.httpStatusCode = httpStatus.value(); + } + + + public BusinessException(String msg) { + super(msg); + this.httpStatusCode = HttpStatus.BAD_REQUEST.value(); + } + + + public Integer getHttpStatusCode() { + return httpStatusCode; + } + +} \ No newline at end of file diff --git a/src/main/java/com/example/jz/modle/entity/Announcement.java b/src/main/java/com/example/jz/modle/entity/Announcement.java index 1c98c27..349b27a 100644 --- a/src/main/java/com/example/jz/modle/entity/Announcement.java +++ b/src/main/java/com/example/jz/modle/entity/Announcement.java @@ -1,7 +1,9 @@ package com.example.jz.modle.entity; import java.util.Date; + import com.baomidou.mybatisplus.extension.activerecord.Model; + import java.io.Serializable; /** @@ -20,7 +22,6 @@ private Integer groupId; //鍒涘缓鏃堕棿 private Date createTime; - public Integer getAnnouncementId() { return announcementId; @@ -63,5 +64,5 @@ protected Serializable pkVal() { return this.announcementId; } - } +} diff --git a/src/main/java/com/example/jz/modle/entity/Case.java b/src/main/java/com/example/jz/modle/entity/Cause.java similarity index 85% rename from src/main/java/com/example/jz/modle/entity/Case.java rename to src/main/java/com/example/jz/modle/entity/Cause.java index 0103815..94a7c0c 100644 --- a/src/main/java/com/example/jz/modle/entity/Case.java +++ b/src/main/java/com/example/jz/modle/entity/Cause.java @@ -5,13 +5,13 @@ import java.io.Serializable; /** - * (Case)琛ㄥ疄浣撶被 + * (Cause)琛ㄥ疄浣撶被 * * @author makejava - * @since 2022-07-11 16:35:56 + * @since 2022-07-11 16:55:40 */ @SuppressWarnings("serial") -public class Case extends Model<Case> { +public class Cause extends Model<Cause> { //妗堜欢ID private Integer id; //澶村儚鍦板潃 @@ -28,11 +28,10 @@ private String amountInvolved; //鎶ユ鏉愭枡鍥剧墖鍦板潃 澶氫釜鐢�,鍒嗛殧 private String reportMaterials; - //鎶ユ鏂瑰紡 - private String reportMethod -reportMethod; //鎶ユ鏃堕棿 private Date reportTime; + //鎶ユ鏂瑰紡 + private String reportMethod; public Integer getId() { @@ -99,20 +98,6 @@ this.reportMaterials = reportMaterials; } - public String getReportMethod -reportMethod() { - return reportMethod -reportMethod; - } - - public void setReportMethod -reportMethod(String reportMethod -reportMethod) { - this.reportMethod -reportMethod = reportMethod -reportMethod; - } - public Date getReportTime() { return reportTime; } @@ -121,6 +106,14 @@ this.reportTime = reportTime; } + public String getReportMethod() { + return reportMethod; + } + + public void setReportMethod(String reportMethod) { + this.reportMethod = reportMethod; + } + /** * 鑾峰彇涓婚敭鍊� * diff --git a/src/main/java/com/example/jz/service/CaseService.java b/src/main/java/com/example/jz/service/CaseService.java deleted file mode 100644 index 909bc28..0000000 --- a/src/main/java/com/example/jz/service/CaseService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.jz.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.example.jz.modle.entity.Case; - -/** - * (Case)琛ㄦ湇鍔℃帴鍙� - * - * @author makejava - * @since 2022-07-11 16:35:56 - */ -public interface CaseService extends IService<Case> { - -} - diff --git a/src/main/java/com/example/jz/service/CauseService.java b/src/main/java/com/example/jz/service/CauseService.java new file mode 100644 index 0000000..af8cbbb --- /dev/null +++ b/src/main/java/com/example/jz/service/CauseService.java @@ -0,0 +1,15 @@ +package com.example.jz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.example.jz.modle.entity.Cause; + +/** + * (Cause)琛ㄦ湇鍔℃帴鍙� + * + * @author makejava + * @since 2022-07-11 16:55:41 + */ +public interface CauseService extends IService<Cause> { + +} + diff --git a/src/main/java/com/example/jz/service/impl/CaseServiceImpl.java b/src/main/java/com/example/jz/service/impl/CaseServiceImpl.java deleted file mode 100644 index 76dd229..0000000 --- a/src/main/java/com/example/jz/service/impl/CaseServiceImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.example.jz.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.example.jz.dao.CaseDao; -import com.example.jz.modle.entity.Case; -import com.example.jz.service.CaseService; -import org.springframework.stereotype.Service; - -/** - * (Case)琛ㄦ湇鍔″疄鐜扮被 - * - * @author makejava - * @since 2022-07-11 16:35:56 - */ -@Service("caseService") -public class CaseServiceImpl extends ServiceImpl<CaseDao, Case> implements CaseService { - -} - diff --git a/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java b/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java new file mode 100644 index 0000000..a69c7a7 --- /dev/null +++ b/src/main/java/com/example/jz/service/impl/CauseServiceImpl.java @@ -0,0 +1,19 @@ +package com.example.jz.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.example.jz.dao.CauseDao; +import com.example.jz.modle.entity.Cause; +import com.example.jz.service.CauseService; +import org.springframework.stereotype.Service; + +/** + * (Cause)琛ㄦ湇鍔″疄鐜扮被 + * + * @author makejava + * @since 2022-07-11 16:55:41 + */ +@Service("causeService") +public class CauseServiceImpl extends ServiceImpl<CauseDao, Cause> implements CauseService { + +} + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1c87d9b..45ec867 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,7 +3,7 @@ ### datasource #test -spring.datasource.url=jdbc:mysql://42.193.1.25/:3306/job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai +spring.datasource.url=jdbc:mysql://42.193.1.25:3306/qyjz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=321$YcYl@1970! spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -- Gitblit v1.8.0