工具类包(1)-通用模块-Saas多租户平台开发
目录
内容
1、创建通用common模块
不管是什么样的项目、体系或者架构,都需要一些工具类。那么我们把这些常用的自定义工具类统一放置在包中:com.ihrm.common.utils。创建子模块过程不在详述,结构目录如图:
常用工具类如下:
- 返回相关
- 通用返回类
- 通用响应(枚举)
- 查询相关
- 通用分页工具类
- 日志相关
- IPUtils
- 获取用户IP
- IPUtils
- spring相关
- spring上下文工具类
- 杂项
- 通用日期工具类
- 日期转字符串
- 字符串转日期
- 数字工具类
- 生成指定位数的随机数
- 常量类
- 通用日期工具类
1、返回相关
1.1、通用响应(枚举)
通常响应中需要包含code与message,那么我们把一些常用code和mesage组合封装到Enum中,其他如有需要可以自定义,详细如下:
-
RespEnum.java
package com.ihrm.common.utils; import lombok.AllArgsConstructor; import lombok.Getter; @Getter @AllArgsConstructor public enum RespEnum { SUCCESS(0, "SUCCESS") ; private int code; private String message; }
-
解析:
- 这么我们只添加了成功响应枚举,code为0,方便前端处理
- 其他响应枚举,根据需要添加
-
常用响应码与描述可参考 HTTP协议响应码与描述
1.2、通用响应类
常用响应类包含3部分:响应码、响应消息、响应数据。详细如下:
-
R.java
package com.ihrm.common.utils; import java.util.HashMap; import java.util.Map; /** * 返回数据 */ public class R extends HashMap<String, Object> { private static final long serialVersionUID = 1L; public R() { put("code", 0); put("msg", "success"); } public static R error() { return error(500, "未知异常,请联系管理员"); } public static R error(String msg) { return error(500, msg); } public static R error(int code, String msg) { R r = new R(); r.put("code", code); r.put("msg", msg); return r; } public static R ok(String msg) { R r = new R(); r.put("msg", msg); return r; } public static R ok(Map<String, Object> map) { R r = new R(); r.putAll(map); return r; } public static R ok() { return new R(); } public static R body(RespEnum respEnum) { R r = new R(); r.put("code", respEnum.getCode()); r.put("msg", respEnum.getMessage()); return r; } @Override public R put(String key, Object value) { super.put(key, value); return this; } }
2、查询相关
2.1、常量类
-
Constant.java
扫描二维码关注公众号,回复: 12407646 查看本文章package com.ihrm.common.utils; public class Constant { /** * 当前页码 */ public static final String PAGE = "page"; /** * 每页显示记录数 */ public static final String LIMIT = "limit"; /** * 排序字段 */ public static final String ORDER_FIELD = "orderField"; /** * 排序方式 */ public static final String ORDER = "order"; /** * 升序 */ public static final String ASC = "asc"; }
2.2、分页工具类
package com.ihrm.common.utils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.io.Serializable;
import java.util.List;
/**
* 分页工具类
*/
public class PageUtils implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 总记录数
*/
private int totalCount;
/**
* 每页记录数
*/
private int pageSize;
/**
* 总页数
*/
private int totalPage;
/**
* 当前页数
*/
private int currPage;
/**
* 列表数据
*/
private List<?> list;
/**
* 分页
* @param list 列表数据
* @param totalCount 总记录数
* @param pageSize 每页记录数
* @param currPage 当前页数
*/
public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
this.list = list;
this.totalCount = totalCount;
this.pageSize = pageSize;
this.currPage = currPage;
this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
}
/**
* 分页
*/
public PageUtils(IPage<?> page) {
this.list = page.getRecords();
this.totalCount = (int)page.getTotal();
this.pageSize = (int)page.getSize();
this.currPage = (int)page.getCurrent();
this.totalPage = (int)page.getPages();
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}
后记 :
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
前端项目源代码地址:https://gitee.com/gaogzhen/ihrm-parent // 后端项目
后端JAVA源代码地址:https://gitee.com/gaogzhen/ihrm-vue // 前端后台管理系统