好用的代码示例

1、在某个字段后面追加固定的一段数据

   mysql公式:update table_name set field=CONCAT('str',field) where .....

                示例:update app_contract_ info set apply_type=CONCAT('123456',apply_type) where cont_code ='HFFQ'

   oracle公式: update table_name set field=field||'str' where .....

                示例:update app_contract_ info set apply_type=apply_type||'123456' where cont_code ='HFFQ'

 

 

linq使用代码示例:

IEnumerable<Tuple3<Map<String, Object>, Map<String, Object>, Map<String, Object>>> join = Linq.asEnumerable(loanList).leftJoin(
        Linq.asEnumerable(payCardList),
        x -> Convert.toString(x.get("loanNo")),
        y -> Convert.toString(y.get("loanNo")),
        Tuple::create)
        .leftJoin(Linq.asEnumerable(resultList),
                x -> Convert.toString(x.getItem1().get("loanNo")),
                y -> Convert.toString(y.get("loanNo")),
                (x, y) -> Tuple.create(x.getItem1(), x.getItem2(), y));

for(Tuple3<Map<String, Object>, Map<String, Object>, Map<String, Object>> tuple : join) {
    Map<String, Object> map1=tuple .getItem1();
    Map<String, Object> map2=tuple .getItem2();
    Map<String, Object> map3=tuple .getItem3();
}

 

 类型相互转换工具类:https://github.com/Pinshuducha/utils/tree/master/Convert.java

 

连接处理

Map<String, Object> adConfigByModelIdAndSizeType = this.getAdConfigByModelIdAndSizeType(params);
        if (!HttpUtil.isSuccess(adConfigByModelIdAndSizeType)) {
            return adConfigByModelIdAndSizeType;
        }
        Map<String, Object> body = FormatUtil.getChildMap(adConfigByModelIdAndSizeType, "body");
        List<Map<String, Object>> modelList = HCMapUtils.getChildList(body, "modelList");
        if (HCCollectionUtils.isEmpty(modelList)) {
            return fail("99", "没有返回参数列表");
        }
        Map<String, Object> result = new HashMap<>(2);
        // 将父级元素获取到
        IEnumerable<Map<String, Object>> father = Linq.asEnumerable(modelList).where(item -> "1".equals(item.get("homeLevel")));
        // 获取子级元素获取到
        IEnumerable<IGrouping<String, Map<String, Object>>> child = Linq.asEnumerable(modelList)
                .where(item -> "2".equals(item.get("homeLevel")))
                .groupBy(x -> Convert.toString(x.get("fatherId")));
        IEnumerable<Tuple2<Map<String, Object>, IGrouping<String, Map<String, Object>>>> joinResult = father.leftJoin(child,
                x -> Convert.toString(x.get("id")),
                y -> Convert.toString(y.getKey()),
                Tuple::create);
        List<Map<String, Object>> childItem = joinResult.select(entry -> {
            Map<String, Object> left = entry.getItem1();
            left.put("child", entry.getItem2().toList());
            return left;
        }).toList();
        result.put("modelList", childItem);
        logger.info("最终结果:" + FormatUtil.toJson(result));
        return success(result);

关于数据库表结构主键的操作

可以新增单主键或联合主键;

alter table tablename add constraint pk_tablename primary key (column1,column2,...);

新增主键前要检查预建主键列是否有重复数据:

select column1 from tablenamed group by column1 having count(column1)>1;

linq 源码

https://github.com/timandy/linq

java压缩文件(一般压缩图片)

 注:此方法的入参File oldFile, File newFile 都是可以new File(path)

public static void compressFile(File oldFile, File newFile, Double scale, Long maxSize, Integer widthMax, Integer heightMax) {
	Assert.notNull(oldFile, "oldFile can not be null");
	Assert.notNull(newFile, "oldFile can not be null");
	logger.info(String.format("压缩照片==> srcPath:%s, descPath:%s", oldFile.getAbsolutePath(), newFile.getAbsolutePath()));
	long startTime = System.currentTimeMillis();
	Long compressDefaultSize = Convert.defaultLong(CommonProperties.get("file.compressDefaultSize"), 2 * 1024 * 1024);//2M
	Double compressDefaultScale = Convert.defaultDouble(CommonProperties.get("file.compressDefaultScale"), 0.5);
	maxSize = Convert.defaultLong(maxSize, compressDefaultSize);
	scale = Convert.defaultDouble(scale, compressDefaultScale);
	logger.info(String.format("原照片大小:%s, 压缩标准:%s 单位:byte(B)", oldFile.length(), maxSize));
	widthMax = Convert.defaultInteger(widthMax, 4096);
	heightMax = Convert.defaultInteger(heightMax, 4096);

	Image srcFile = null;
	int width;
	int height;
	try {
		srcFile = ImageIO.read(oldFile);
		width = srcFile.getWidth(null);
		height = srcFile.getHeight(null);
		logger.info(String.format("原照片width:%s, height:%s", width, height));
	} catch (IOException e) {
		logger.error(ThrowableUtils.getString(e));
		throw new BusinessException(RestUtil.ERROR_INTERNAL_CODE, "压缩文件失败");
	}

	try {
		int count = 0;
		while (oldFile.length() > maxSize || width> widthMax || height> heightMax) {
			logger.info("ompressCount = " + (++count));
			int widthNew = (int) (width * scale); // 源图宽度
			int heightNew = (int) (height * scale); // 源图高度

			String subfix = StringUtils.getFilenameExtension(oldFile.getPath());
			BufferedImage buffImg;
			if (subfix.equals("png")) {
				buffImg = new BufferedImage(widthNew, heightNew, BufferedImage.TYPE_INT_ARGB);
			} else {
				buffImg = new BufferedImage(widthNew, heightNew, BufferedImage.TYPE_INT_RGB);
			}
			Graphics2D graphics = buffImg.createGraphics();
			graphics.setBackground(new Color(255, 255, 255));
			graphics.setColor(new Color(255, 255, 255));
			graphics.fillRect(0, 0, widthNew, heightNew);
			graphics.drawImage(srcFile.getScaledInstance(widthNew, heightNew, Image.SCALE_SMOOTH), 0, 0, null);
			graphics.dispose();
			ImageIO.write(buffImg, subfix, newFile);
			oldFile = newFile;
			srcFile = ImageIO.read(oldFile);
			width = srcFile.getWidth(null);
			height = srcFile.getHeight(null);
		}

	} catch (Exception e) {
		logger.error(ThrowableUtils.getString(e));
		throw new BusinessException(RestUtil.ERROR_INTERNAL_CODE, "压缩文件失败");
	}
	Long timeSpan = System.currentTimeMillis() - startTime;
	logger.debug(String.format("ompressTook:%sms", timeSpan));
	logger.info(String.format("照片压缩后大小:%s 单位:byte(B)", newFile.length()));
	logger.info(String.format("照片压缩后width:%s, height:%s", width, height));
	return;
}

 参数拼接

按照某种规则(自定义优先级)排序

public void sortLoanList(List<Map<String, Object>> list) {

        Map<String, Integer> hm = new HashMap<>();
        hm.put("1", 1);
        hm.put("2", 2);
        hm.put("3", 3);
        hm.put("01", 4);
        hm.put("02", 5);
        hm.put("03", 6);
        hm.put("04", 7);
        hm.put("05", 8);
        hm.put("06", 9);
        hm.put("20", 10);
        hm.put("22", 11);
        hm.put("23", 12);
        hm.put("24", 13);
        hm.put("AA", 14);
        hm.put("OD", 15);
        hm.put("WS", 16);
        hm.put("30", 17);
        hm.put("31", 18);
        hm.put("92", 19);
        hm.put("93", 20);

        if (list != null) {
            list.sort((Map<String, Object> s1, Map<String, Object> s2) -> {
                String outSts1 = Convert.defaultString(s1.get(ServiceConstant.OUTSTS));
                String outSts2 = Convert.defaultString(s2.get(ServiceConstant.OUTSTS));
                if (hm.containsKey(outSts1) && hm.containsKey(outSts2)) {
                    return hm.get(outSts2) - hm.get(outSts1);
                } else {
                    return 1;
                }
            });
        }
    }

修改表下字段的长度

 alter table 表名 modify (字段名 varchar2(长度 char));

遍历时删其中的元素

 分段更新数据库表的字段示例

begin
  declare
    cursor c_update is
     select rowid row_id
        from 表名 where 字段名 is null;
    v_counter number := 0;
  begin
    for one_row in c_update loop
      v_counter := v_counter + 1;
      update 表名 SET 字段名='01' where rowid = one_row.row_id;
      if (v_counter = 50000) then
        v_counter := 0;
        commit;
      end if;
    end loop;
    commit;
  end;
end;
/

 json转map工具类

public static Map<String, Object> json2Map(String json) {
    if (json == null) {
        return null;
    } else {
        JSONObject jo = new JSONObject(json);
        Map<String, Object> map = new LinkedHashMap();

        Object k;
        Object v;
        for(Iterator var3 = jo.keySet().iterator(); var3.hasNext(); map.put(k.toString(), v)) {
            k = var3.next();
            v = jo.get(k.toString());
            if (v == JSONObject.NULL) {
                v = "";
            } else if (v instanceof JSONArray) {
                v = json2List(v.toString());
            }
        }

        return map;
    }
}

public static List<Map<String, Object>> json2List(String json) {
    if (json == null) {
        return null;
    } else {
        List<Map<String, Object>> list = new ArrayList();
        JSONArray ja = new JSONArray(json);

        for(int i = 0; i < ja.length(); ++i) {
            String subJson = ja.get(i).toString();
            Map<String, Object> map = json2Map(subJson);
            list.add(map);
        }

        return list;
    }
}

public static HashMap<String, Object> json2DeepMap(String json) {
    if (json == null) {
        return null;
    } else {
        JSONObject jo = new JSONObject(json);
        HashMap<String, Object> map = new HashMap();

        Object k;
        Object v;
        for(Iterator var3 = jo.keySet().iterator(); var3.hasNext(); map.put(k.toString(), v)) {
            k = var3.next();
            v = jo.get(k.toString());
            if (v == JSONObject.NULL) {
                v = "";
            } else if (v instanceof JSONArray) {
                v = json2DeepList(v.toString());
            } else if (v instanceof JSONObject) {
                v = json2DeepMap(JSONObject.valueToString(v));
            }
        }

        return map;
    }
}

public static List<Object> json2DeepList(String json) {
    if (json == null) {
        return null;
    } else {
        List<Object> list = new ArrayList();
        JSONArray ja = new JSONArray(json);

        for(int i = 0; i < ja.length(); ++i) {
            String subJson = ja.get(i).toString();
            if (subJson.startsWith("{") && subJson.endsWith("}")) {
                Map<String, Object> map = json2DeepMap(subJson);
                list.add(map);
            } else {
                list.add(subJson);
            }
        }

        return list;
    }
}

@NotBlank(message = "商品名称必须填写")

@Slf4j
@RestControllerAdvice
public class GlobalExceptionControllerAdvice {

    /**
     * 全局数据教研异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public Map<String, String> handleValidException(MethodArgumentNotValidException e){
        BindingResult bindingResult = e.getBindingResult();
        Map<String, String> errorMap = Maps.newHashMap();
        bindingResult.getFieldErrors().forEach(fieldError -> errorMap.put(fieldError.getField(),fieldError.getDefaultMessage()));
        return errorMap;
    }

}
 

A-B 只比较一次即可

/**
 * A-B 只比较一次即可
 * @param list
 * @return
 */
public static Map<String, Object> distinctMethod(List<String> list) {
	Map<String, Object> result = new HashMap<>();
	List<String> success = new ArrayList<>();
	List<String> err = new ArrayList<>();
	for (int i = 0; i < list.size(); i++) {
		boolean isJump = false;
		for (int j = i + 1; j < list.size(); j++) {
			// 判断成功和失败的判断逻辑
			if (list.get(i).equals(list.get(j))) {
				isJump = true;
				err.add(list.get(j));
				break;
			}
		}
		if (!isJump) {
			success.add(list.get(i));
		}
	}
	result.put("success", success);
	result.put("err", err);
	return result;
}

金额大写转换

import java.math.BigDecimal;

/**
 * 金额大写
 */
public class CapitalAmount {
    /**
     * 汉字大写
     */
    private static final String[] AMOUNT = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    /**
     * 货币单位
     */
    private static final String[] UNIT = {"分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟"};
    /**
     * 特殊字符
     */
    private static final String[] SPEC = {"整", "负"};
    /**
     * 精度
     */
    private static final int ACCURACY = 2;

    /**
     * 输入的金额转换为大写
     *
     * @param amount 金额
     * @return 大写后的金额
     */
    public static String capital(BigDecimal amount) {
        StringBuilder sbf = new StringBuilder();
        // 返回-1,0,或1,此BigDecimal的值分类为负,零或正值。
        int whole = amount.signum();
        if (whole == 0) {
            // 输入0时返回 零元整
            return sbf.append(AMOUNT[0]).append(UNIT[2]).append(SPEC[0]).toString();
        }
        // 对金额进行四舍五入(向上取整)BigDecimal.ROUND_HALF_UP
        long number = amount.movePointRight(ACCURACY).setScale(0, 4).abs().longValue();
        // 获取金额的最后两位
        long scale = number % 100;
        // 解决精度损失问题(将一个long类型强转为int类型会存精度损失,导致数据不对)
        long result;
        // 数字下标
        int numUnit;
        // 单位下标
        int numIndex = 0;
        // 获取零
        boolean getZero = false;
        // 判断最后两位数: 分为四种情况: 00=0, 01=1, 10,11
        if (scale <= 0) {
            numIndex = 2;
            number = number / 100;
            getZero = true;
        }
        if ((scale > 0) && ((scale % 10 <= 0))) {
            numIndex = 1;
            number = number / 10;
            getZero = true;
        }
        int zeroSize = 0;
        while (number > 0) {
            // 每次获取最后一个数
            result = number % 10;
            // 存在精度的损失
            numUnit = (int) result;
            if (numUnit > 0) {
                if ((numIndex == 9) && (zeroSize >= 3)) {
                    // 万
                    sbf.insert(0, UNIT[6]);
                }
                if ((numIndex == 13) && (zeroSize >= 3)) {
                    // 亿
                    sbf.insert(0, UNIT[10]);
                }
                sbf.insert(0, UNIT[numIndex]);
                sbf.insert(0, AMOUNT[numUnit]);
                getZero = false;
                zeroSize = 0;
            } else {
                ++zeroSize;
                if (!(getZero)) {
                    sbf.insert(0, AMOUNT[numUnit]);
                }
                if (numIndex == 2) {
                    sbf.insert(0, UNIT[numIndex]);
                } else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {
                    sbf.insert(0, UNIT[numIndex]);
                }
                getZero = true;
            }
            // 让number每次都去掉最后一个数
            number = number / 10;
            ++numIndex;
        }
        // 如果whole == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负
        if (whole == -1) {
            sbf.insert(0, SPEC[1]);
        }
        // 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整
        if (scale <= 0) {
            sbf.append(SPEC[0]);
        }
        return sbf.toString();
    }

}

  

将list集合拆分成指定长度的集合

private List<List<RsnStockReportByPageOutDto>> splitList(List<RsnStockReportByPageOutDto> list, int listSize) {
	if (null == list || 0 == listSize) {
		return new ArrayList<>();
	}
	int length = list.size();
	int num = (length + listSize - 1) / listSize;
	List<List<RsnStockReportByPageOutDto>> newList = new ArrayList<>(num);
	for (int i = 0; i < num; i++) {
		int fromIndex = i * listSize;
		int toIndex = Math.min((i + 1) * listSize, length);
		newList.add(list.subList(fromIndex, toIndex));
	}
	return newList;
}

  




posted @ 2019-04-01 17:37  品书读茶  阅读(931)  评论(0)    收藏  举报