java项目common常用方法和类
在一个项目当中,common类通常作为一个工具类和一些通用方法,在这里记录以下mall项目中所用到的common中的方法。
1、包结构
2、pom.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.***.mall</groupId>
<artifactId>mall</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.***.mall</groupId>
<artifactId>mall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mall-common</name>
<description>工具类及通用代码</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- spring-boot-starter-web 为我们提供了嵌入的
Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
</project>
3、api包
这里贴一个对Java泛型之<T> T、 T、<T>用法进行学习:https://blog.csdn.net/weixin_52772307/article/details/126868855
接下来分析api包中类的作用
1)、CommonPage
这里留个疑问,pageHelper的用法,以及这里为什么要加上包名???
package com.***.mall.common.api;
import com.github.pagehelper.PageInfo;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* 分页数据封装类
* Created by macro on 2019/4/19.
*/
public class CommonPage<T> {
/**
* 当前页码
*/
private Integer pageNum;
/**
* 每页数量
*/
private Integer pageSize;
/**
* 总页数
*/
private Integer totalPage;
/**
* 总条数
*/
private Long total;
/**
* 分页数据
*/
private List<T> list;
/**
* 将PageHelper分页后的list转为分页信息
*/
public static <T> com.***.mall.common.api.CommonPage<T> restPage(List<T> list) {
com.***.mall.common.api.CommonPage<T> result = new com.***.mall.common.api.CommonPage<T>();
PageInfo<T> pageInfo = new PageInfo<T>(list);
result.setTotalPage(pageInfo.getPages());
result.setPageNum(pageInfo.getPageNum());
result.setPageSize(pageInfo.getPageSize());
result.setTotal(pageInfo.getTotal());
result.setList(pageInfo.getList());
return result;
}
/**
* 将SpringData分页后的list转为分页信息
*/
public static <T> com.***.mall.common.api.CommonPage<T> restPage(Page<T> pageInfo) {
com.***.mall.common.api.CommonPage<T> result = new com.***.mall.common.api.CommonPage<T>();
result.setTotalPage(pageInfo.getTotalPages());
result.setPageNum(pageInfo.getNumber());
result.setPageSize(pageInfo.getSize());
result.setTotal(pageInfo.getTotalElements());
result.setList(pageInfo.getContent());
return result;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
}
2)commonResult
package com.***.mall.common.api;
/**
* 通用返回对象
* 在web层与前端或者与其他系统进行交互时,一般在项目(应用)返回统一的参数格式,此公共返回类
* CommonResult即是用作此。
*/
public class CommonResult<T> {
/**
* 状态码
*/
private long code;
/**
* 提示信息
*/
private String message;
/**
* 数据封装
*/
private T data;
protected CommonResult() {
}
protected CommonResult(long code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public static <T> com.scut.mall.common.api.CommonResult<T> success(T data) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data);
}
/**
* 成功返回结果
*
* @param data 获取的数据
* @param message 提示信息
*/
public static <T> com.scut.mall.common.api.CommonResult<T> success(T data, String message) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.SUCCESS.getCode(), message, data);
}
/**
* 失败返回结果
* @param errorCode 错误码
*/
public static <T> com.scut.mall.common.api.CommonResult<T> failed(com.scut.mall.common.api.IErrorCode errorCode) {
return new com.scut.mall.common.api.CommonResult<T>(errorCode.getCode(), errorCode.getMessage(), null);
}
/**
* 失败返回结果
* @param errorCode 错误码
* @param message 错误信息
*/
public static <T> com.scut.mall.common.api.CommonResult<T> failed(com.scut.mall.common.api.IErrorCode errorCode, String message) {
return new com.scut.mall.common.api.CommonResult<T>(errorCode.getCode(), message, null);
}
/**
* 失败返回结果
* @param message 提示信息
*/
public static <T> com.scut.mall.common.api.CommonResult<T> failed(String message) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.FAILED.getCode(), message, null);
}
/**
* 失败返回结果
*/
public static <T> com.scut.mall.common.api.CommonResult<T> failed() {
return failed(ResultCode.FAILED);
}
/**
* 参数验证失败返回结果
*/
public static <T> com.scut.mall.common.api.CommonResult<T> validateFailed() {
return failed(ResultCode.VALIDATE_FAILED);
}
/**
* 参数验证失败返回结果
* @param message 提示信息
*/
public static <T> com.scut.mall.common.api.CommonResult<T> validateFailed(String message) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), message, null);
}
/**
* 未登录返回结果
*/
public static <T> com.scut.mall.common.api.CommonResult<T> unauthorized(T data) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data);
}
/**
* 未授权返回结果
*/
public static <T> com.scut.mall.common.api.CommonResult<T> forbidden(T data) {
return new com.scut.mall.common.api.CommonResult<T>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data);
}
public long getCode() {
return code;
}
public void setCode(long code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
3)IErrorCode
/**
* 常用API返回对象接口
*/
public interface IErrorCode {
/**
* 返回码
*/
long getCode();
/**
* 返回信息
*/
String getMessage();
}
定义接口,返回码和返回信息
4)、ResultCode
Enum枚举类的学习:https://blog.csdn.net/qq_43842093/article/details/121175711
/**
* 常用API返回对象
*/
public enum ResultCode implements com.***.mall.common.api.IErrorCode {
SUCCESS(200, "操作成功"),
FAILED(500, "操作失败"),
VALIDATE_FAILED(404, "参数检验失败"),
UNAUTHORIZED(401, "暂未登录或token已经过期"),
FORBIDDEN(403, "没有相关权限");
private long code;
private String message;
private ResultCode(long code, String message) {
this.code = code;
this.message = message;
}
public long getCode() {
return code;
}
public String getMessage() {
return message;
}
}