isBlank和isEmpty的区别
isEmpty会把空格视为非空,而isBlank会把空格视为空
DecimalFormat的使用
客户要求数据保留两位小数,不足两位的后面要补0,使用DecimalFormat.format函数实现(0.00保存两位小数,不足的补零;0.00#两或三位小数,区别是如果实际数据只有两位,后面不会补0,如果实际数据是三位小数则会显示三位),一级指标分析时查询数据,封装的时候做一个数据格式处理,指标二级下钻和三级下钻同理,在封装数据的时候使用NumberUtil.dealValue工具类进行数据格式处理
使用MybatisPlus进行分页查询
因为MybatisPlus的分页操作是通过拦截器实现的,所以要在MybatisPlusConfig配置中配置拦截器
public MybatisPlusInterceptor paginationInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); //设置每页最大数据量 paginationInnerInterceptor.setMaxLimit(10000L); interceptor.addInnerInterceptor(paginationInnerInterceptor); return interceptor; }
配置好之后使用service或者mapper提供的方法xxxmapper.selectPage(Page page,Wapper wapper)或者xxxservice.Page(Page page)可直接使用分页,Page对象传入,current和size,当前页和大小,例如第0页显示10000条数据,Page(0,10000)
查询完之后会有返回值,返回一个Page对象,这个对象中包含了,当前页数,显示条数,最大页数,数据总条数等参数,可以直接通过page.getxxx()获取
page.getCurrent()获取当前页码
page.getTotal()方法返回总记录数
page.getSize()每页显示记录数
page.getPages()总页数
查询时间范围的sql语句
select * from stat_log where click_time between (date_format(click_time, '%Y-%m-%d') = #{date1}) and (date_format(click_time, '%Y-%m-%d') = #{date2});
遇到的问题以及解决方法
范型
在数组参数中使用泛型要使用 '?' 来做占位符
public static JSONObject doPost(String url, Map<String, String> headerParam, ArrayList<?> bodyParam) {}
sql查询时间范围
between and 的取值区间
包括边界值的 not between 不包括边界值
如果是天数,例如between2023-10-23 and 2023-10-24
sql会自动把后边的时间补全,查的实际是2023-10-23 00:00:00 到 2023-10-24 00:00:00只是23这一天的数据
字符串分割
参数里是正则表达式
String.split("\\s+")
从空格处分割成一个String数组
遇到的异常
NullPointerException
描述:在当天没有数据的时候,传递空数据进行判断,报空指针异常,
解决:在判断之前也要加上非空判断