文章目录
1、BigDecimal#
new DecimalFormat("#.00").format(0.123);输出错误?’.123’
bug重现
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(0.123));
-------------------------------------
输出: .123
期望结果: 0.123
解决方法 #.00 改为 #0.00
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(0.123));
-------------------------------------
输出: 0.123
期望结果: 0.123
2、Mybatis-plus
修改数据库字段为null时,不生效,仍为旧值
在字段上,加上@TableField(updateStrategy= FieldStrategy.IGNORED)
注解即可。默认会进行null判断。(同理,还有@TableField(insertStrategy= FieldStrategy.IGNORED)
)
@Data
@TableName(value = "test")
public class TestPO {
private String id;
@TableField(updateStrategy= FieldStrategy.IGNORED)
private Timestamp startDate;
@TableField(updateStrategy=FieldStrategy.IGNORED)
private Timestamp endDate;
}
3、注解
@JsonFormat 和 @DateTimeFormat 区别
@DateTimeFormat(“yyyy-MM-dd”),只能解析传入的params,也就是get方法请求。
@JsonFormat(“yyyy-MM-dd”),可以解析body。传入或者传出,都可以解析。
4、SQL
模糊查询,替换 like 的几种方法
LIKE语句
SELECT `column` FROM `table` where `condition` like `%keyword%'
事实上,可以使用 locate(position) 和 instr 这两个函数来代替
一、LOCATE语句
SELECT `column` from `table` where locate(‘keyword’, `condition`)>0
二、或是 locate 的別名 position
POSITION语句
SELECT `column` from `table` where position(‘keyword’ IN `condition`)
三、INSTR语句
SELECT `column` from `table` where instr(`condition`, ‘keyword’ )>0
locate、position 和 instr 的差別只是参数的位置不同,同时locate 多一个起始位置的参数外,两者是一样的。
mysql> SELECT LOCATE(‘bar’, ‘foobarbar’,5);
-> 7
速度上这三个比用 like 稍快了一点。
MAX()和MIN(),存在NULL值,如何比较?
如果全为null值时,则返回null。
如果不全为null值,那么会优先过滤掉null值。