application.properties配置 #mysql配置spring.datasource.url=jdbc:mysql://localhost/wechat?characterEncoding=utf-8useSSL=falsespring.datasource.username=rootspring.datasource.password=soyeajrspring.datasource.driver-class-name=com.mysql.j
#mysql配置 spring.datasource.url=jdbc:mysql://localhost/wechat?characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=soyeajr spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=5 #mybatis配置 注意开启:@MapperScan(basePackages = "com.soyea.mapper") mybatis.mapper-locations=classpath:mappers/*.xml #mybatis.type-aliases-package=com.soyea.entity,com.soyea.common.dto,com.hg.common.vo #mybatis.configuration.cache-enabled=true #jackson配置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 #应用根路径 server.context-path=/sell server.port=8080 spring.jpa.show-sql=true logging.level.org.springframework.web=debugResultEnum.java
package com.hg.common.result; import lombok.Getter; /** * 错误码枚举类 */ @Getter public enum ResultEnum { //通用模块 SUCCESS(1, "操作成功"), SYSTEM_ERROR(2, "系统出现异常,请联系管理员"), PARAM_ERROR(3, "参数不正确"); //其他模块 private Integer code; private String message; ResultEnum(Integer code, String message) { this.code = code; this.message = message; } public static ResultEnum stateOf(int index) { for (ResultEnum state : values()) { if (state.getCode() == index) { return state; } } return null; } }自定义业务异常
/** * 自定义业务异常 * Created by skh on 2017/12/13 */ @Getter public class BizException extends RuntimeException{ private Integer code; public BizException(ResultEnum resultEnum) { super(resultEnum.getMessage()); this.code = resultEnum.getCode(); } public BizException(Integer code, String message) { super(message); this.code = code; } }Ajax返回对象
package com.hg.common.result; import lombok.Data; import java.io.Serializable; /** * ajax请求返回的对象 */ @Data public class AjaxResult全局异常处理器implements Serializable { private Integer code; private String msg; private T data; /** * 成功时调用 * @param data * @param * @return */ public static AjaxResult success(T data) { AjaxResult ajaxResult = new AjaxResult(); ajaxResult.setCode(ResultEnum.SUCCESS.getCode()); ajaxResult.setMsg(ResultEnum.SUCCESS.getMessage()); ajaxResult.setData(data); return ajaxResult; } /** * 成功时调用 * @return */ public static AjaxResult success(){ return success(null); } /** * 失败时调用 * @param code * @param msg * @return */ public static AjaxResult error(Integer code, String msg) { AjaxResult ajaxResult = new AjaxResult(); ajaxResult.setCode(code); ajaxResult.setMsg(msg); return ajaxResult; } /** * 失败时调用 * @return */ public static AjaxResult error(ResultEnum resultEnum) { AjaxResult ajaxResult = new AjaxResult(); ajaxResult.setCode(resultEnum.getCode()); ajaxResult.setMsg(resultEnum.getMessage()); return ajaxResult; } }
package com.hg.common.exception; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Filter; import cn.hutool.core.util.StrUtil; import com.hg.common.result.AjaxResult; import com.hg.common.result.ResultEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindException; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import sun.swing.MenuItemLayoutHelper; import java.util.List; import java.util.function.Consumer; /** * 全局异常处理器 * Created by skh on 2017/12/22 */ @ControllerAdvice @Slf4j public class GlobalExceptionHandler { /** * 处理全局异常 * * @param e * @return */ @ExceptionHandler(Exception.class) @ResponseBody public AjaxResult handleException(Exception e) { log.error(e.getMessage(), e); return AjaxResult.error(ResultEnum.SYSTEM_ERROR.getCode(), ResultEnum.SYSTEM_ERROR.getMessage()); } /** * 处理自定义异常 * * @param e * @return */ @ExceptionHandler(BizException.class) @ResponseBody public AjaxResult handleBizException(BizException e) { log.error(e.getMessage(), e); return AjaxResult.error(e.getCode(), e.getMessage()); } /** * 处理参数校验异常 * * @param e * @return */ @ExceptionHandler(BindException.class) @ResponseBody public AjaxResult handleBindException(BindException e) { List返回json字符串 null值转空字符串allErrors = e.getAllErrors(); List errorMsgList = CollUtil.newArrayList(); for (ObjectError error : allErrors) { String defaultMessage = error.getDefaultMessage(); errorMsgList.add(defaultMessage); } //拼接所有错误信息 String errorMsg = CollUtil.join(errorMsgList, ","); log.error(ResultEnum.PARAM_ERROR.getMessage() + ":" + errorMsg,e); return AjaxResult.error(ResultEnum.PARAM_ERROR.getCode(), ResultEnum.PARAM_ERROR.getMessage() + ":" + errorMsg); } }
package com.enz.college.admin.common.config; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.io.IOException; /** * 〈返回json空值去掉null和""〉 */ @Configuration public class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化 // Include.Include.ALWAYS 默认 // Include.NON_DEFAULT 属性为默认值不序列化 // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量 // Include.NON_NULL 属性为NULL 不序列化 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 字段保留,将null值转为"" // objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer