java工作记录

本文介绍了在SpringBoot项目中如何进行时间格式化、Map和List的排序操作,包括BigDecimal的除法与精度控制,异常信息的收集,以及使用反射获取方法形参和MyBatis-Roo配置多数据源的方法。
摘要由CSDN通过智能技术生成

时间格式化

@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);
    }
}
}

若依

配置多数据源

若依配置多数据源,分别为不同数据库时示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值