最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Lombok之@Accessors用法及說(shuō)明

 更新時(shí)間:2023年03月13日 15:43:19   作者:ouseika  
這篇文章主要介紹了java Lombok之@Accessors用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java Lombok之@Accessors用法

之前用Lombok,只是為了省去寫(xiě)get和set方法,在學(xué)習(xí)的時(shí)候,突然發(fā)現(xiàn),Accessors這個(gè)特殊的屬性注解竟然還有如此強(qiáng)大的功能,特此為自己的無(wú)知記錄一下。

fluent屬性

fluent:流暢的,流利的意思,設(shè)置為true,則getter和setter方法的方法名都是基礎(chǔ)屬性名,且setter方法返回當(dāng)前對(duì)象。

@Data
@Accessors(fluent = true)
public class User {
    private int id;
    private String name;
}

可以看到,當(dāng)我們使用get或者set方法的時(shí)候,方法名都是基礎(chǔ)的屬性名稱,非常的簡(jiǎn)潔

chain屬性

chain:鏈?zhǔn)降?,設(shè)置為true,則setter方法返回當(dāng)前對(duì)象。

@Data
@Accessors(chain = true)
public class User {
    private int id;
    private String name;
}

如上圖可以看出,和常規(guī)的get和set方法名稱一致,不過(guò)區(qū)別就是set方法返回的是對(duì)象名稱,更加的直觀,適合對(duì)象賦值時(shí)的連續(xù)賦值參數(shù)。

prefix屬性

prefix:前綴,用于生成getter和setter方法的字段名會(huì)忽視指定前綴(遵守駝峰命名)。

@Data
@Accessors(prefix = {"tb","tbn"})
public class User {
    private int tb_id;
    private String tbn_name;
}

可以看出,方法中的get和set方法均過(guò)濾了相關(guān)的前綴屬性,看起來(lái)更加的簡(jiǎn)潔。

Lombok @Data @Accessors注解遇到的坑

碰到個(gè)反射的問(wèn)題,原數(shù)據(jù)是一個(gè) map,對(duì)應(yīng)數(shù)據(jù)庫(kù)表的鍵值對(duì),此時(shí)需要將這個(gè) map 轉(zhuǎn)換成 Entity,所以會(huì)用到反射。

用了 Apache BeanUtils,用了 BeanMap 都是不行,無(wú)法反射。

如下代碼

import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.cglib.beans.BeanMap;
?
import java.util.HashMap;
import java.util.Map;
?
public class Test {
?
? ? public static void main(String[] args) {
? ? ? ? Map<String, Object> map = new HashMap<>();
? ? ? ? map.put("id", "111");
? ? ? ? map.put("name", "xxxx");
?
? ? ? ? Model model = new Model();
? ? ? ? BeanMap.create(model).putAll(map);
? ? ? ? System.out.println(JSON.toJSONString(model));
? ? }
?
? ? @Data
? ? @Accessors(chain = true)
? ? public static class Model {
? ? ? ? private String id;
? ? ? ? private String name;
? ? }
}

此時(shí)你會(huì)發(fā)現(xiàn)其實(shí)沒(méi)問(wèn)題,但是輸出結(jié)果如下:

{}

此時(shí)辦法已經(jīng)試遍了,后來(lái)修改 Entity,將 lombok 注解去掉,發(fā)現(xiàn)就OK了。此時(shí)不用想,肯定是遇到坑了,然后排查之后發(fā)現(xiàn)是 @Accessors 的問(wèn)題,將其去掉就OK了。

如下:

import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.cglib.beans.BeanMap;
?
import java.util.HashMap;
import java.util.Map;
?
public class Test {
?
? ? public static void main(String[] args) {
? ? ? ? Map<String, Object> map = new HashMap<>();
? ? ? ? map.put("id", "111");
? ? ? ? map.put("name", "xxxx");
?
? ? ? ? Model model = new Model();
? ? ? ? BeanMap.create(model).putAll(map);
? ? ? ? System.out.println(JSON.toJSONString(model));
? ? }
?
? ? @Data
? ? public static class Model {
? ? ? ? private String id;
? ? ? ? private String name;
? ? }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Spring自定義命名空間

    使用Spring自定義命名空間

    這篇文章主要介紹了使用Spring自定義命名空間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 通過(guò)實(shí)例解析JMM和Volatile底層原理

    通過(guò)實(shí)例解析JMM和Volatile底層原理

    這篇文章主要介紹了通過(guò)實(shí)例解析JMM和Volatile底層原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳談Spring對(duì)IOC的理解(推薦篇)

    詳談Spring對(duì)IOC的理解(推薦篇)

    下面小編就為大家?guī)?lái)一篇詳談Spring對(duì)IOC的理解(推薦篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 詳解Mybatis框架SQL防注入指南

    詳解Mybatis框架SQL防注入指南

    這篇文章主要介紹了詳解Mybatis框架SQL防注入指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 一文徹底吃透SpringMVC中的轉(zhuǎn)發(fā)和重定向

    一文徹底吃透SpringMVC中的轉(zhuǎn)發(fā)和重定向

    大家應(yīng)該都知道springmvc本來(lái)就會(huì)把返回的字符串作為視圖名解析,然后轉(zhuǎn)發(fā)到對(duì)應(yīng)的視圖,這篇文章主要給大家介紹了關(guān)于SpringMVC中轉(zhuǎn)發(fā)和重定向的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 關(guān)于Idea清除緩存并重啟解決的問(wèn)題

    關(guān)于Idea清除緩存并重啟解決的問(wèn)題

    這篇文章主要介紹了關(guān)于Idea清除緩存并重啟解決的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • mybatis 為什么千萬(wàn)不要使用 where 1=1

    mybatis 為什么千萬(wàn)不要使用 where 1=1

    這篇文章主要介紹了mybatis 為什么千萬(wàn)不要使用 where 1=1,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象

    簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象

    這篇文章主要介紹了簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象,類是面向?qū)ο缶幊陶Z(yǔ)言的一個(gè)重要概念,它是對(duì)一項(xiàng)事物的抽象概括,可以包含該事物的一些屬性定義,以及操作屬性的方法,需要的朋友可以參考下
    2019-06-06
  • SpringCloudAlibaba分布式組件詳解

    SpringCloudAlibaba分布式組件詳解

    這篇文章主要介紹了簡(jiǎn)單了解Spring Cloud Alibaba分布式組件相關(guān)知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • JAVA設(shè)計(jì)模式----建造者模式詳解

    JAVA設(shè)計(jì)模式----建造者模式詳解

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)建造者模式Builder Pattern,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

城固县| 盐山县| 长治县| 建瓯市| 安西县| 景洪市| 泾源县| 清水县| 泉州市| 会昌县| 吉木萨尔县| 高阳县| 师宗县| 南和县| 徐州市| 桓台县| 海林市| 浦城县| 汾西县| 翁牛特旗| 瑞安市| 沁水县| 平顺县| 中西区| 始兴县| 兖州市| 罗源县| 赤城县| 南开区| 肇庆市| 尚义县| 湘乡市| 嘉善县| 庆城县| 柳河县| 原平市| 孟村| 信宜市| 韶关市| 普安县| 新野县|