SpringBoot(八)()

  本篇文章为你整理了SpringBoot(八)()的详细内容,包含有 SpringBoot(八),希望能帮助你了解 SpringBoot(八)。

  1.1.2.2 实现类

  注意记得在 主启动类中添加 mapper接口扫描注解 :@MapperScan("com.kgc.sbt.mapper")

  

@Service

 

  public class EdocEntryServiceImpl implements EdocEntryService {

   @Autowired(required = false)

   private EdocEntryMapper edocEntryMapper;

   @Override

   public List EdocEntry getEdocEntriesBySummary(String summary) {

   //使用逆向工程,封装查询条件

   EdocEntryExample edocEntryExample = new EdocEntryExample();

   //排序条件

   edocEntryExample.setOrderByClause(" id desc ");

   //根据摘要 模糊查询

   edocEntryExample.createCriteria().andSummaryLike("%" + summary + "%");

   //调用持久层 查询数据

   return edocEntryMapper.selectByExample(edocEntryExample);

  

 

  1.1.3 测试请求

  

@Slf4j

 

  @RestController

  public class EdocEntryController {

   @Autowired

   private EdocEntryService edocEntrieService;

   //根据电子文档,查询文档列表,直接使用 RequestResult

   @GetMapping("/edocEntries")

   //指定请求返回类型 RequestResult List EdocEntry

   //public RequestResult List EdocEntry edocEntries(@RequestParam(required = false) String summary){

   //自适应请求返回类型 RequestResult ?

   public RequestResult ? edocEntries(@RequestParam(required = false) String summary){

   //调用业务接口,获取文档列表,进行统一返回

   //创建统一返回对象

   //每次都需要创建返回对象,代码冗余,不利于维护

   RequestResult List EdocEntry requestResult = new RequestResult ();

   requestResult.setCode("200");

   requestResult.setMsg("success");

   List EdocEntry edocEntriesBySummary = edocEntrieService.getEdocEntriesBySummary(summary);

   log.info("{}",edocEntriesBySummary);

   requestResult.setData(edocEntriesBySummary);

   //接口统一返回查询结果

   return requestResult;

  

 

  测试结果:

  1.2 使用 ResultBuildUtil 结果对象构建工具

  1.2.1 CommonConstant 常量类

  

//Description: 系统常量类,统一管理项目中所有的常量

 

  public class CommonConstant {

   统一返回成功的状态码

   public static final String UNIFY_RESULT_SUCCESS_CODE = "200";

   统一返回成功的信息

   public static final String UNIFY_RESULT_SUCCESS_MSG = "SUCCESS";

   统一返回错误的状态码

   public static final String UNIFY_RESULT_FAIL_CODE = "999";

   统一返回错误的信息

   public static final String UNIFY_RESULT_FAIL_MSG = "FAIL";

  
requestResult.setCode(CommonConstant.UNIFY_RESULT_SUCCESS_CODE);

   requestResult.setMsg(CommonConstant.UNIFY_RESULT_SUCCESS_MSG);

   requestResult.setData(t);

   return requestResult;

   //构建成功返回,空参

   public static T RequestResult T success() {

   return success(null);

   //构建 失败返回,支持任意类型参数,用户不便于归类的异常错误结果返回

   public static T RequestResult T fail(T t) {

   //创建统一返回失败结果对象

   RequestResult T requestResult = new RequestResult ();

   requestResult.setCode(CommonConstant.UNIFY_RESULT_FAIL_CODE);

   requestResult.setMsg(CommonConstant.UNIFY_RESULT_FAIL_MSG);

   requestResult.setData(t);

   return requestResult;

   //构建 失败返回,空参

   public static T RequestResult T fail() {

   //创建统一返回失败结果对象

   return fail(null);

   //构建 失败返回,自定义错误码,和说明,支持任意类型参数

   public static T RequestResult T fail(String errCode,String errMsg,T t) {

   //创建统一返回失败结果对象

   RequestResult T requestResult = new RequestResult ();

   requestResult.setCode(errCode);

   requestResult.setMsg(errMsg);

   requestResult.setData(t);

   return requestResult;

   //构建 失败返回,自定义错误码,和说明,无参

   public static T RequestResult T fail(String errCode,String errMsg) {

   //创建统一返回 失败结果对象

   RequestResult T requestResult = new RequestResult ();

   requestResult.setCode(errCode);

   requestResult.setMsg(errMsg);

   return requestResult;

  

 

  1.2.3 service层

  service层不变;

  1.2.4 请求测试

  

@Slf4j

 

  @RestController

  public class EdocEntryController {

   @Autowired

   private EdocEntryService edocEntrieService;

   //根据电子文档,查询文档列表, 使用结果构建工具

   @GetMapping("/edocEntries")

   public RequestResult ? edocEntries(@RequestParam(required = false) String summary){

   //使用结果构建工具,返回成功的结果

   return ResultBuildUtil.success(edocEntrieService.getEdocEntriesBySummary(summary));

  

 

  测试结果:

  2、统一分页工具

  2.1 PageSupport 统一分页工具类

  

// 分页 结果返回类

 

  @Data

  public class PageSupport T {

   //当前页码

   private int pageNo;

   //页面条数

   private int pageSize;

   //总条数

   private int totalCount;

   //总页数

   private int totalPage;

   //分页数据

   private Collection T PageData;

   //当总条数确定时,总条数确定

   public void setTotalCount(int totalCount) {

   this.totalCount = totalCount;

   totalPage = totalCount % this.pageSize == 0

   ? totalCount / this.pageSize

   : totalCount / this.pageSize + 1;

  

 

  2.2 service 层

  2.2.1 接口

  

public interface EdocEntryService {

 

   //条件分页查询

   PageSupport EdocEntry getEdocEntriesBySummary(String summary,Integer pageNo,Integer pageSize);

  

 

  2.2.2 实现类

  

@Service

 

  public class EdocEntryServiceImpl implements EdocEntryService {

   @Override

   public PageSupport EdocEntry getEdocEntriesBySummary(String summary, Integer pageNo, Integer pageSize) {

   //创建统一返回分页对象

   PageSupport EdocEntry pageSupport = new PageSupport ();

   //设置分页参数

   pageSupport.setPageNo(pageNo 1 ? CommonConstant.DEFAULT_INIT_PAGE_NO : pageNo);

   pageSupport.setPageSize(pageNo 3 ? CommonConstant.DEFAULT_INIT_PAGE_SIZE : pageSize);

   //封装查询条件

   EdocEntryExample edocEntryExample = new EdocEntryExample();

   //排序条件

   edocEntryExample.setOrderByClause(" id desc ");

   //根据摘要 模糊查询

   edocEntryExample.createCriteria().andSummaryLike("%" + summary + "%");

   // 查询满足条件总条数

   pageSupport.setTotalCount((int) edocEntryMapper.countByExample(edocEntryExample));

   //增加分页参数

   edocEntryExample.setOffset((long)(pageSupport.getPageNo()-1)*pageSupport.getPageSize());

   edocEntryExample.setLimit(pageSupport.getPageSize());

   //增加分页数据

   pageSupport.setPageData(edocEntryMapper.selectByExample(edocEntryExample));

   //返回分页对象

   return pageSupport;

  

 

  2.3 commons-lang中 isEmpty 方法和idBlank区别

  2.3.1 依赖

  

 !-- commons-lang start -- 

 

   dependency

   groupId commons-lang /groupId

   artifactId commons-lang /artifactId

   version 2.6 /version

   /dependency

   !-- commons-lang end --

  

 

  2.3.2 isEmpty 方法和idBlank区别

  

isEmpty 和 isBlank ,isEmpty 方法和idBlank区别:只包含空格字符串判断,isEmpty是false,isBlank是true;

 

  

 

  2.3.2.1 isEmpty

  

* pre 

 

  * StringUtils.isEmpty(null) = true

  * StringUtils.isEmpty("") = true

  * StringUtils.isEmpty(" ") = false

  * StringUtils.isEmpty("bob") = false

  * StringUtils.isEmpty(" bob ") = false

  * /pre

  

 

  2.3.2.2 isBlank

  

* pre 

 

  * StringUtils.isBlank(null) = true

  * StringUtils.isBlank("") = true

  * StringUtils.isBlank(" ") = true

  * StringUtils.isBlank("bob") = false

  * StringUtils.isBlank(" bob ") = false

  * /pre

  

 

  2.4 测试请求

  

//根据电子文档,查询文档列表

 

  @GetMapping("/edocEntriesPage")

  public RequestResult ? edocEntriesPage(@RequestParam(value = "summary",required = false) String summary,

   @RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,

   @RequestParam(value = "pageSize",defaultValue = "3") Integer pageSize){

   if(StringUtils.isBlank(summary)){

   return ResultBuildUtil.fail();

   //调用业务接口,获取文档列表,进行统一返回

   //使用结果构建工具,返回成功的结果

   return ResultBuildUtil.success(edocEntrieService.getEdocEntriesBySummary(summary,pageNo,pageSize));

  

 

  测试结果:

  2.5 commons-lang3 生成6位随机数

  2.5.1 依赖

  

 !-- commons-lang3 start -- 

 

   dependency

   groupId org.apache.commons /groupId

   artifactId commons-lang3 /artifactId

   version 3.7 /version

   /dependency

   !-- commons-lang3 end --

  

 

  2.5.2 代码

  

String code = RandomStringUtils.randomNumeric(6);

 

  

 

  2.6 Pattern.matches()正则匹配

  

import java.util.regex.Pattern;

 

  //举例:

  if(!Pattern.matches("1[3,5,7,8,9]\\d{9}",userTel)){

   //不匹配的情况

   log.warn("****** 手机号:{},格式非法 ******",userTel);

  

 

  3、统一异常处理

  3.1 EdocExceptionEnum 自定义异常枚举

  

//自定义异常枚举

 

  public enum EdocExceptionEnum {

   * 参数为空

   EDOC_REQUEST_PARAM_EMPTY("201", "参数为空"),

   * 参数为非法

   EDOC_REQUEST_PARAM_ILLEGAL("202", "参数非法"),

   * 网络异常

   EDOC_NETWORK_ERROR("301", "网络异常"),

   * 数据库异常

   EDOC_DATABASE_ERROR("401", "数据库异常"),

   * 数据库异常

   EDOC_SYSTEM_ERROR("501", "系统异常");

   * 异常码

   private String errCode;

   * 异常说明

   private String errMsg;

   * 提供带有两个参数的构造方法

   EdocExceptionEnum(String errCode, String errMsg){

   this.errCode = errCode;

   this.errMsg = errMsg;

   public String getErrCode() {

   return errCode;

   public String getErrMsg() {

   return errMsg;

  

 

  3.2 EdocException 自定义异常类

  

public class EdocException extends RuntimeException{

 

   异常枚举类型全局私有属性

   private EdocExceptionEnum edocExceptionEnum;

   //继承 RuntimeException 生成所有的构造方法

   public EdocException() {

   public EdocException(String message) {

   super(message);

   public EdocException(String message, Throwable cause) {

   super(message, cause);

   public EdocException(Throwable cause) {

   super(cause);

   public EdocException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {

   super(message, cause, enableSuppression, writableStackTrace);

   //自定义枚举异常构造函数

   public EdocException(EdocExceptionEnum edocExceptionEnum){

   this.edocExceptionEnum = edocExceptionEnum;

   //获取枚举异常属性

   public EdocExceptionEnum getEdocExceptionEnum() {

   return edocExceptionEnum;

  

 

  3.3 EdocExceptionHandler 自定义异常统一处理类

  

//自定义异常统一处理类

 

  @ControllerAdvice

  public class EdocExceptionHandler {

   * @author : huayu

   * @date : 19/10/2022

   * @param : [edocException]

   * @return : requestResoult ?

   * @description : 系统自定义异常处理,对系统中所有抛出自定义的异常,都会进行统一拦截处理,实现统一返回

   @ExceptionHandler(EdocException.class) //指定对该自定义异常类 进行处理

   @ResponseBody //指定返回的数据 为 json类型

   public RequestResult ? handleEdocException(EdocException edocException){

   //统一返回失败的结果(前提:抛出的必须是带枚举类型的异常)

   return ResultBuildUtil.fail(edocException.getEdocExceptionEnum().getErrCode(),edocException.getEdocExceptionEnum().getErrMsg());

  

 

  3.4 请求测试

  

@GetMapping("/edocEntriesPage")

 

  public RequestResult ? edocEntriesPage(@RequestParam(value = "summary",required = false) String summary,

   @RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,

   @RequestParam(value = "pageSize",defaultValue = "3") Integer pageSize){

   //判断 summary参数是否为空

   if(StringUtils.isBlank(summary)){

   //抛出自定义异常:使用异常枚举

   throw new EdocException(EdocExceptionEnum.EDOC_REQUEST_PARAM_EMPTY);

   ////抛出自定义异常:使用异常枚举

   try {

   return ResultBuildUtil.success(edocEntrieService.getEdocEntriesBySummary(summary,pageNo,pageSize));

   } catch (Exception e) {

   //e.printStackTrace();

   //抛出自定义异常:使用异常枚举

   throw new EdocException(EdocExceptionEnum.EDOC_DATABASE_ERROR);

  

 

  测试请求参数为空:

  测试数据库密码错误:

  以上就是SpringBoot(八)()的详细内容,想要了解更多 SpringBoot(八)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: