文章目录
时间格式化
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//入参格式化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//出参格式化,8为标准时区和北京时间的差异
private Date birthday;
集合
Map根据value排序
Map<String,Double> upMap = new HashMap<>();
upMap.put("aa",2.5);
upMap.put("bb",1.5);
upMap.put("cc",3.5);
upMap.put("dd",0.5);
Map<String,Double> upResult = new HashMap<>();
upMap.entrySet()
.stream()
//降序排序
.sorted(Map.Entry.<String,Double>comparingByValue().reversed())
.forEachOrdered(d->upResult.put(d.getKey(),d.getValue()));
List
List<Map<String, Object>> list = new ArrayList<>();
List<Map<String, Object>> sortList = list.stream()
.sorted(Comparator.comparing(d -> (BigDecimal) d.get("每万人口现案数")))
.collect(Collectors.toList());
sortList = CollectionUtil.reverse(sortList);
BigDecimal
除法和保留两位小数
BigDecimal bigDecimal = new BigDecimal(o.toString());
bigDecimal = bigDecimal.divide(new BigDecimal(10000));
//四舍五入保留两位小数
bigDecimal = bigDecimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(bigDecimal.toString());
BigDecimal bigDecimal = new BigDecimal("100");
BigDecimal bigDecima2 = new BigDecimal("3");
//除法需要加入四舍五入和保留小数,否则会出现无限小数
//java.lang.ArithmeticException:
//Non-terminating decimal expansion;
//no exact representable decimal result.
System.out.println(bigDecimal.divide(bigDecima2,4,RoundingMode.HALF_UP));
异常
异常信息收集
public static void main(String [] args){
try {
int i = 0;
System.out.println(1/i);
}catch (Exception e){
StringWriter writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer,true));
System.out.println(writer.getBuffer().toString());
}
}
获取路径
- class.getResource:该方法接收一个表示文件路径的参数,返回一个URL对象,该URL对象表示的name指向的那个资源(文件)。绝对路径的话,根目录符号/是代表项目路径而不是磁盘的根目录
App.class.getResource('innerFile.txt')
App.class.getResource('/test/test/innerFile.txt')
- classLoader.getResource:接收一个表示路径的参数,返回一个URL对象,该URL对象表示name对应的资源(文件)。该方法只能接收一个相对路径,不能接收绝对路径如/xxx/xxx。并且,接收的相对路径是相对于项目的包的根目录来说的。
App.class.getClassLoader().getResource('test/test/innerFile.txt')
springBoot项目常用方法
- 获取当前项目的地址
String path = System.getProperty("user.dir");
// D:\work\test
- 获取classes目录的绝对路径
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
String path = ResourceUtils.getURL("classespath:").getPath();
// D:/work/test/target/classes/
反射
获取方法形参
public static void main(String [] args){
/**
* 不可以通过注入的对象获取class对象
* dlwaService.getClass().getMethods();
* jdk8以上才可以
*/
Method[] methods = DlwaService.class.getMethods();
for (Method method : methods) {
DefaultParameterNameDiscoverer discoverer = new DefaultParameterNameDiscoverer();
String[] parameterNames = discoverer.getParameterNames(method);
for (String parameterName : parameterNames) {
//输出方法形参名称
//就可以根据形参名称来对参数进行排序
System.out.println(parameterName);
}
}
}
若依
配置多数据源
若依配置多数据源,分别为不同数据库时示例