|
|
|
@ -12,133 +12,204 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Mybatis-Plus工具类
|
|
|
|
|
* MyBatis-Plus 工具类,用于简化分页、条件构造等功能。
|
|
|
|
|
*/
|
|
|
|
|
public class MPUtil {
|
|
|
|
|
|
|
|
|
|
// 定义下划线字符常量
|
|
|
|
|
public static final char UNDERLINE = '_';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//mybatis plus allEQ 表达式转换
|
|
|
|
|
public static Map allEQMapPre(Object bean,String pre) {
|
|
|
|
|
Map<String, Object> map =BeanUtil.beanToMap(bean);
|
|
|
|
|
return camelToUnderlineMap(map,pre);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//mybatis plus allEQ 表达式转换
|
|
|
|
|
public static Map allEQMap(Object bean) {
|
|
|
|
|
Map<String, Object> map =BeanUtil.beanToMap(bean);
|
|
|
|
|
return camelToUnderlineMap(map,"");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper allLikePre(Wrapper wrapper,Object bean,String pre) {
|
|
|
|
|
Map<String, Object> map =BeanUtil.beanToMap(bean);
|
|
|
|
|
Map result = camelToUnderlineMap(map,pre);
|
|
|
|
|
|
|
|
|
|
return genLike(wrapper,result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper allLike(Wrapper wrapper,Object bean) {
|
|
|
|
|
Map result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genLike(wrapper,result);
|
|
|
|
|
/**
|
|
|
|
|
* 将对象的所有字段转换为 Map,并且将字段名转换为下划线格式,带前缀。
|
|
|
|
|
*
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @param pre 前缀
|
|
|
|
|
* @return 转换后的 Map
|
|
|
|
|
*/
|
|
|
|
|
public static Map<String, Object> allEQMapPre(Object bean, String pre) {
|
|
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(bean);
|
|
|
|
|
return camelToUnderlineMap(map, pre);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将对象的所有字段转换为 Map,并且将字段名转换为下划线格式。
|
|
|
|
|
*
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @return 转换后的 Map
|
|
|
|
|
*/
|
|
|
|
|
public static Map<String, Object> allEQMap(Object bean) {
|
|
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(bean);
|
|
|
|
|
return camelToUnderlineMap(map, "");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加所有字段的模糊匹配条件,并带前缀。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @param pre 前缀
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper allLikePre(Wrapper wrapper, Object bean, String pre) {
|
|
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(bean);
|
|
|
|
|
Map<String, Object> result = camelToUnderlineMap(map, pre);
|
|
|
|
|
return genLike(wrapper, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加所有字段的模糊匹配条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper allLike(Wrapper wrapper, Object bean) {
|
|
|
|
|
Map<String, Object> result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genLike(wrapper, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据 Map 中的键值对为 Wrapper 添加模糊匹配条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param param 键值对 Map
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper genLike(Wrapper wrapper, Map<String, Object> param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i = 0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if (i > 0) wrapper.and(); // 确保条件之间用 AND 连接
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
String value = (String) entry.getValue();
|
|
|
|
|
wrapper.like(key, value);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Wrapper genLike( Wrapper wrapper,Map param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i=0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if(i>0) wrapper.and();
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
String value = (String) entry.getValue();
|
|
|
|
|
wrapper.like(key, value);
|
|
|
|
|
i++;
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加模糊匹配或等于条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper likeOrEq(Wrapper wrapper, Object bean) {
|
|
|
|
|
Map<String, Object> result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genLikeOrEq(wrapper, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据 Map 中的键值对为 Wrapper 添加模糊匹配或等于条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param param 键值对 Map
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper genLikeOrEq(Wrapper wrapper, Map<String, Object> param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i = 0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if (i > 0) wrapper.and(); // 确保条件之间用 AND 连接
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
if (entry.getValue().toString().contains("%")) {
|
|
|
|
|
wrapper.like(key, entry.getValue().toString().replace("%", ""));
|
|
|
|
|
} else {
|
|
|
|
|
wrapper.eq(key, entry.getValue());
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper likeOrEq(Wrapper wrapper,Object bean) {
|
|
|
|
|
Map result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genLikeOrEq(wrapper,result);
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加所有字段的等于条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param bean 转换的对象
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper allEq(Wrapper wrapper, Object bean) {
|
|
|
|
|
Map<String, Object> result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genEq(wrapper, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据 Map 中的键值对为 Wrapper 添加等于条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param param 键值对 Map
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper genEq(Wrapper wrapper, Map<String, Object> param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i = 0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if (i > 0) wrapper.and(); // 确保条件之间用 AND 连接
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
wrapper.eq(key, entry.getValue());
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper genLikeOrEq( Wrapper wrapper,Map param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i=0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if(i>0) wrapper.and();
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
if(entry.getValue().toString().contains("%")) {
|
|
|
|
|
wrapper.like(key, entry.getValue().toString().replace("%", ""));
|
|
|
|
|
} else {
|
|
|
|
|
wrapper.eq(key, entry.getValue());
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加范围条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param params 参数 Map
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper between(Wrapper wrapper, Map<String, Object> params) {
|
|
|
|
|
for (String key : params.keySet()) {
|
|
|
|
|
String columnName = "";
|
|
|
|
|
if (key.endsWith("_start")) {
|
|
|
|
|
columnName = key.substring(0, key.indexOf("_start"));
|
|
|
|
|
if (StringUtils.isNotBlank(params.get(key).toString())) {
|
|
|
|
|
wrapper.ge(columnName, params.get(key));
|
|
|
|
|
}
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper allEq(Wrapper wrapper,Object bean) {
|
|
|
|
|
Map result = BeanUtil.beanToMap(bean, true, true);
|
|
|
|
|
return genEq(wrapper,result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Wrapper genEq( Wrapper wrapper,Map param) {
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
int i=0;
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
if(i>0) wrapper.and();
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
|
String key = entry.getKey();
|
|
|
|
|
wrapper.eq(key, entry.getValue());
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Wrapper between(Wrapper wrapper,Map<String, Object> params) {
|
|
|
|
|
for(String key : params.keySet()) {
|
|
|
|
|
String columnName = "";
|
|
|
|
|
if(key.endsWith("_start")) {
|
|
|
|
|
columnName = key.substring(0, key.indexOf("_start"));
|
|
|
|
|
if(StringUtils.isNotBlank(params.get(key).toString())) {
|
|
|
|
|
wrapper.ge(columnName, params.get(key));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(key.endsWith("_end")) {
|
|
|
|
|
columnName = key.substring(0, key.indexOf("_end"));
|
|
|
|
|
if(StringUtils.isNotBlank(params.get(key).toString())) {
|
|
|
|
|
wrapper.le(columnName, params.get(key));
|
|
|
|
|
}
|
|
|
|
|
if (key.endsWith("_end")) {
|
|
|
|
|
columnName = key.substring(0, key.indexOf("_end"));
|
|
|
|
|
if (StringUtils.isNotBlank(params.get(key).toString())) {
|
|
|
|
|
wrapper.le(columnName, params.get(key));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Wrapper sort(Wrapper wrapper,Map<String, Object> params) {
|
|
|
|
|
String order = "";
|
|
|
|
|
if(params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) {
|
|
|
|
|
order = params.get("order").toString();
|
|
|
|
|
}
|
|
|
|
|
if(params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) {
|
|
|
|
|
if(order.equalsIgnoreCase("desc")) {
|
|
|
|
|
wrapper.orderDesc(Arrays.asList(params.get("sort")));
|
|
|
|
|
} else {
|
|
|
|
|
wrapper.orderAsc(Arrays.asList(params.get("sort")));
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 为 Wrapper 对象添加排序条件。
|
|
|
|
|
*
|
|
|
|
|
* @param wrapper 查询包装器
|
|
|
|
|
* @param params 参数 Map
|
|
|
|
|
* @return 更新后的 Wrapper
|
|
|
|
|
*/
|
|
|
|
|
public static Wrapper sort(Wrapper wrapper, Map<String, Object> params) {
|
|
|
|
|
String order = "";
|
|
|
|
|
if (params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) {
|
|
|
|
|
order = params.get("order").toString();
|
|
|
|
|
}
|
|
|
|
|
if (params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) {
|
|
|
|
|
if (order.equalsIgnoreCase("desc")) {
|
|
|
|
|
wrapper.orderDesc(Arrays.asList(params.get("sort")));
|
|
|
|
|
} else {
|
|
|
|
|
wrapper.orderAsc(Arrays.asList(params.get("sort")));
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 驼峰格式字符串转换为下划线格式字符串
|
|
|
|
|
*
|
|
|
|
|
* @param param
|
|
|
|
|
* @return
|
|
|
|
|
* 将驼峰格式字符串转换为下划线格式字符串。
|
|
|
|
|
*
|
|
|
|
|
* @param param 输入字符串
|
|
|
|
|
* @return 下划线格式字符串
|
|
|
|
|
*/
|
|
|
|
|
public static String camelToUnderline(String param) {
|
|
|
|
|
if (param == null || "".equals(param.trim())) {
|
|
|
|
@ -158,13 +229,15 @@ public class MPUtil {
|
|
|
|
|
return sb.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] ages) {
|
|
|
|
|
System.out.println(camelToUnderline("ABCddfANM"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Map camelToUnderlineMap(Map param, String pre) {
|
|
|
|
|
|
|
|
|
|
Map<String, Object> newMap = new HashMap<String, Object>();
|
|
|
|
|
/**
|
|
|
|
|
* 将 Map 的键值对转换为下划线格式,并支持前缀。
|
|
|
|
|
*
|
|
|
|
|
* @param param 输入 Map
|
|
|
|
|
* @param pre 前缀
|
|
|
|
|
* @return 转换后的 Map
|
|
|
|
|
*/
|
|
|
|
|
public static Map<String, Object> camelToUnderlineMap(Map<String, Object> param, String pre) {
|
|
|
|
|
Map<String, Object> newMap = new HashMap<>();
|
|
|
|
|
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
Map.Entry<String, Object> entry = it.next();
|
|
|
|
@ -175,10 +248,13 @@ public class MPUtil {
|
|
|
|
|
} else if (StringUtils.isEmpty(pre)) {
|
|
|
|
|
newMap.put(newKey, entry.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
newMap.put(pre + "." + newKey, entry.getValue());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return newMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
System.out.println(camelToUnderline("ABCddfANM"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|