Java踩坑记录

今天遇到了一个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;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇