今天遇到了一个List数组问题,往List数组里面添加一个对象,然后对那个对象的某个值进行修改,再次添加到List中,会发生属性覆盖。
原因是因为:Java中的对象是引用地址,往数组里添加也是添加引用地址,所以会发生值覆盖,只保留最后一次修改的对象值。Map同理(加上这句话的原因是 找了半天的list中的对象原因,没发现还有个代码里面还有个map)。
错误信息:java: 某些输入文件使用了未经检查或不安全的操作。

找到对应的文件路径使用命令 javac -Xlint:unchecked 文件名.java

一般都是编码问题,重新设置一下编码就可以了。
java11.0.2的问题:
编译器消息文件损坏:key=compiler.misc.msg.bug arguments=11.0.2, {1}, {2}, {3}, {4}, {5}, {6}, {7}
升级到11.0.4以上解决
@FeignClient(name = "document-api", url = "http://document-api:8090")
Feign配置中不能使用“.”,“_”等符号(错误:document-api-v1.0),可以使用“-”代替
返回对应的日期格式,mysql返回默认的日期格式为yyyy-MM-dd HH:mm:ss,前端仅需要年月日,在字段上设置注解无效
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
在xml文件中,查询的sql语句中直接添加查出的日期格式(yyyy-MM-dd):
SELECT DATE_FORMAT(day_date, '%Y-%m-%d') AS date
可以使用的格式还有:
格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
报错语句:Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause.
原因:默认的controller返回的是字符串,或者是字符串匹配的模板名称,即直接渲染视图,配合模板引擎,在这种情况下,使用model对象(或者modelandview)的数据将填充user视图中的相关属性,然后展示到浏览器,这个过程也可以称为渲染。
解决办法:将@Controller改成@RestController,RestController就是requestBody+controller的结合,即返回的是json格式。
使用mybatis plus 更新方法,值为null不更新。
原因是直接调用mybatis plus的update方法,会对属性的值进行判断,如果为null,就不会更新数据库,这种情况符合大部分更新条件。但是我们总会遇到需要值为null或者为空的情况。这种情况下就不适用了。一查会发现mybatis plus有五种字段策略:
| 值 | 描述 |
| IGNORED | 忽略空值判断,实体对象的字段是什么值就用什么值更新,支持null值更新操作 |
| NOT_NULL | 进行非NULL判断,也是默认策略,相当于age!=null |
| NOT_EMPTY | 进行非空判断,主要是针对字符串类型,相当于name != null and name != ‘’ |
| NEVER | 从不更新,不管字段是否有值,都不进行更新 |
| DEFAULT | 追随全局配置 |
this.insertStrategy = FieldStrategy.NOT_NULL;
this.updateStrategy = FieldStrategy.NOT_NULL;
this.whereStrategy = FieldStrategy.NOT_NULL;
在全局配置中,这三者的默认值都是FieldStrategy.NOT_NULL,即进行空值判断,不对NULL值数据进行处理。
我们可以修改全局配置或者修改单个字段配置
1、通过配置属性修改全局字段策略:
mybatis-plus.global-config.db-config.update-strategy=not_null mybatis-plus.global-config.db-config.insert-strategy=not_null mybatis-plus.global-config.db-config.where-strategy=not_null
2、在实体对象中,通过@TableField注解可以针对单个字段指定字段策略。
//配置字段更新策略:忽略空值判断
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String email;
