ADD file via upload

main
pe9vkn3zc 6 months ago
parent 408ee3ce30
commit 66872f63a3

@ -0,0 +1,292 @@
package com.utils;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.mapper.Wrapper;
/**
* Mybatis-Plus
*
* MyBatis-Plus便
*
*
* 1. 线
* 2.
* 3.
* 4.
*
*
* - MyBatis-Plus:
* - Hutool: BeanMap
* - Apache Commons Lang3:
*/
public class MPUtil {
// 下划线字符常量
public static final char UNDERLINE = '_';
/**
* MyBatis Plus allEQ
* Java BeanMap
*
* @param bean
* @param pre
* @return Map
*/
public static Map allEQMapPre(Object bean, String pre) {
Map<String, Object> map = BeanUtil.beanToMap(bean);
return camelToUnderlineMap(map, pre);
}
/**
* MyBatis Plus allEQ
* Java BeanMap
*
* @param bean
* @return Map
*/
public static Map allEQMap(Object bean) {
Map<String, Object> map = BeanUtil.beanToMap(bean);
return camelToUnderlineMap(map, "");
}
/**
*
*
* @param wrapper MyBatis-Plus
* @param bean
* @param pre
* @return
*/
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);
}
/**
*
*
* @param wrapper MyBatis-Plus
* @param bean
* @return
*/
public static Wrapper allLike(Wrapper wrapper, Object bean) {
Map result = BeanUtil.beanToMap(bean, true, true);
return genLike(wrapper, result);
}
/**
*
* MapLIKE
*
* @param wrapper MyBatis-Plus
* @param param Map
* @return
*/
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(); // 从第二个条件开始添加AND连接
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
String value = (String) entry.getValue();
wrapper.like(key, value); // 添加LIKE条件
i++;
}
return wrapper;
}
/**
*
* %使LIKEEQ
*
* @param wrapper MyBatis-Plus
* @param bean
* @return
*/
public static Wrapper likeOrEq(Wrapper wrapper, Object bean) {
Map result = BeanUtil.beanToMap(bean, true, true);
return genLikeOrEq(wrapper, result);
}
/**
*
* %使LIKE使EQ
*
* @param wrapper MyBatis-Plus
* @param param Map
* @return
*/
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("%")) {
// 值包含%使用LIKE查询移除%符号)
wrapper.like(key, entry.getValue().toString().replace("%", ""));
} else {
// 值不包含%,使用等值查询
wrapper.eq(key, entry.getValue());
}
i++;
}
return wrapper;
}
/**
*
*
* @param wrapper MyBatis-Plus
* @param bean
* @return
*/
public static Wrapper allEq(Wrapper wrapper, Object bean) {
Map result = BeanUtil.beanToMap(bean, true, true);
return genEq(wrapper, result);
}
/**
*
* MapEQ
*
* @param wrapper MyBatis-Plus
* @param param Map
* @return
*/
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;
}
/**
*
* _start_endBETWEEN
*
* @param wrapper MyBatis-Plus
* @param params Map
* @return
*/
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)); // 小于等于
}
}
}
return wrapper;
}
/**
*
* sortorder
*
* @param wrapper MyBatis-Plus
* @param params Map
* @return
*/
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;
}
/**
* 线
* Java
*
* @param param
* @return 线
*/
public static String camelToUnderline(String param) {
if (param == null || "".equals(param.trim())) {
return "";
}
int len = param.length();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
char c = param.charAt(i);
if (Character.isUpperCase(c)) {
// 遇到大写字母,在前面添加下划线并转为小写
sb.append(UNDERLINE);
sb.append(Character.toLowerCase(c));
} else {
sb.append(c);
}
}
return sb.toString();
}
/**
*
*/
public static void main(String[] ages) {
System.out.println(camelToUnderline("ABCddfANM")); // 输出: a_b_cddf_a_n_m
}
/**
* Map线
*
* @param param Map
* @param pre
* @return Map
*/
public static Map camelToUnderlineMap(Map param, String pre) {
Map<String, Object> newMap = new HashMap<String, Object>();
Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
String key = entry.getKey();
String newKey = camelToUnderline(key); // 转换字段名
// 处理前缀
if (pre.endsWith(".")) {
newMap.put(pre + newKey, entry.getValue());
} else if (StringUtils.isEmpty(pre)) {
newMap.put(newKey, entry.getValue());
} else {
newMap.put(pre + "." + newKey, entry.getValue());
}
}
return newMap;
}
}
Loading…
Cancel
Save