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

詳解Mybatis是如何把數(shù)據(jù)庫(kù)數(shù)據(jù)封裝到對(duì)象中的

 更新時(shí)間:2020年12月21日 09:29:09   作者:@心之所往  
這篇文章主要介紹了Mybatis是如何把數(shù)據(jù)庫(kù)數(shù)據(jù)封裝到對(duì)象中的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、前言

接到一個(gè)問(wèn)題,數(shù)據(jù)庫(kù)為Null的數(shù)據(jù),傳遞到前端顯示為0。之前有了解過(guò),持久層框架(mybatis)在把數(shù)據(jù)庫(kù)數(shù)據(jù)封裝到對(duì)象中,是利用對(duì)象的Setter方法,這個(gè)大家也都知道,因此我就在Setter方法嘗試,結(jié)果并不完全是這樣。下面我用例子演示。

二、準(zhǔn)備階段

1.數(shù)據(jù)表

在這里插入圖片描述

2.表對(duì)應(yīng)的實(shí)體類(lèi)

@Data
@ApiModel("用戶(hù)賬號(hào)")
public class User {

  @ApiModelProperty(value = "用戶(hù)id")
  Integer id;

  @ApiModelProperty(value = "密碼")
  String password;

  @ApiModelProperty(value = "用戶(hù)名")
  String name;

  @ApiModelProperty(value = "狀態(tài)")
  Integer type;

  public void setType(Integer type) {
    if (type == null) {
      this.type = 0;
    } else {
      this.type = type;
    }
    System.out.println("id為"+this.id+"的type = " + this.type);
  }


  public void setName(String name) {
    this.name = name;
    System.out.println("id為"+this.id+"的name = " + this.name);
  }
}

這里用到的是lombok和swagger2注解

3.Controller層

@RestController
@RequestMapping("/user")
@Api(tags = "UserController", description = "用戶(hù)管理")
public class UserController {

  @Autowired
  private UserDao userDao;

  @GetMapping("/getUser/{id}")
  @ApiOperation("獲取用戶(hù)賬號(hào)")
  public User getUser(@PathVariable @ApiParam("用戶(hù)id") Integer id) {
    return userDao.selectOne(id);
  }

  @PostMapping("/setUser")
  @ApiOperation("添加用戶(hù)賬號(hào)")
  public void setUser(@RequestBody User user) {
    userDao.insert(user);
  }
}

圖方便,我就將UserDao直接注入U(xiǎn)serController層中,其中使用到spring boot注解加swagger2注解,稍后使用swagger2進(jìn)行測(cè)試

4.Dao層

public interface UserDao{

  @Select("select * from user where id=#{id}")
  User selectOne(Integer id);

  @Insert("insert into user values(null,#{name},#{password},#{type})")
  void insert(User user);
}

注意:dao接口需要被掃描到才能完成映射

5.swagger2接口

在這里插入圖片描述

6.測(cè)試

1.先獲取id為1的用戶(hù)賬號(hào):

swagger2結(jié)果:

在這里插入圖片描述

控制臺(tái)結(jié)果:

在這里插入圖片描述

說(shuō)明這里都有使用Setter方法賦值

2.再獲取id為2的用戶(hù)賬號(hào):

swagger2結(jié)果:

在這里插入圖片描述

控制臺(tái)結(jié)果:

在這里插入圖片描述

首先,swagger2結(jié)果中 type為null,而不是我們期望的0;再就是,控制臺(tái)也只打印出了一句話(huà)。這是怎么回事呢?別急,我們接著往下看。

3.我準(zhǔn)備在實(shí)體類(lèi)中做點(diǎn)改變,再測(cè)試獲取id為2的用戶(hù)賬號(hào),如下:

改變后的實(shí)體類(lèi):

在這里插入圖片描述

其他地方不變,看結(jié)果。首先,swagger2結(jié)果:

在這里插入圖片描述

再看,控制臺(tái)結(jié)果:

在這里插入圖片描述

小結(jié):通過(guò)上面一些測(cè)試結(jié)果,我斷言當(dāng)數(shù)據(jù)庫(kù)數(shù)據(jù)為null時(shí),框架不會(huì)調(diào)用該屬性的Setter方法為其賦值,而是會(huì)使用它的默認(rèn)值。還有,從控制臺(tái)輸出順序可看出,調(diào)用Setter方法順序?yàn)閿?shù)據(jù)表字段從左至右依次開(kāi)始封裝。

在此,我又冒出了一個(gè)新的想法,我想測(cè)試前端傳到后端的json數(shù)據(jù)是不是也是這個(gè)結(jié)論。還是使用上面準(zhǔn)備的環(huán)境開(kāi)始測(cè)試:

注意:實(shí)體類(lèi)中@ApiModelProperty(value = "狀態(tài)") Integer type;

先把swagger2中數(shù)據(jù)設(shè)置好

在這里插入圖片描述

先看控制臺(tái)結(jié)果:

在這里插入圖片描述

再看數(shù)據(jù)庫(kù)中數(shù)據(jù):

在這里插入圖片描述

小結(jié):跟我預(yù)想的結(jié)果有些出入,本以type為null也不會(huì)調(diào)用Setter方法。因此,spring boot在封裝前端傳來(lái)的json數(shù)據(jù)時(shí),就算數(shù)據(jù)為null,也會(huì)去調(diào)用Setter方法。

三、結(jié)尾

到此這篇關(guān)于詳解Mybatis是如何把數(shù)據(jù)庫(kù)數(shù)據(jù)封裝到對(duì)象中的的文章就介紹到這了,更多相關(guān)Mybatis 數(shù)據(jù)封裝到對(duì)象 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis自動(dòng)創(chuàng)建表和更新表結(jié)構(gòu)

    Mybatis自動(dòng)創(chuàng)建表和更新表結(jié)構(gòu)

    這篇文章主要介紹了Mybatis自動(dòng)創(chuàng)建表和更新表結(jié)構(gòu)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Java中常用修飾符的使用方法匯總

    Java中常用修飾符的使用方法匯總

    下面小編就為大家?guī)?lái)一篇Java中常用修飾符的使用方法匯總。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Java冒泡排序法和選擇排序法的實(shí)現(xiàn)

    Java冒泡排序法和選擇排序法的實(shí)現(xiàn)

    這篇文章主要介紹了Java冒泡排序法和選擇排序法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java中常用數(shù)據(jù)類(lèi)型的輸入輸出詳解

    Java中常用數(shù)據(jù)類(lèi)型的輸入輸出詳解

    本文主要介紹了Java中幾個(gè)常用的數(shù)據(jù)類(lèi)型是如何輸入和輸出的,例如:Char型、int型、double型、數(shù)組、字符串等,對(duì)我們學(xué)習(xí)java有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2021-12-12
  • MyBatis數(shù)組與集合判斷空問(wèn)題

    MyBatis數(shù)組與集合判斷空問(wèn)題

    這篇文章主要介紹了MyBatis數(shù)組與集合判斷空問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • java之生產(chǎn)故障定位Arthas問(wèn)題

    java之生產(chǎn)故障定位Arthas問(wèn)題

    這篇文章主要介紹了java之生產(chǎn)故障定位Arthas問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解決在啟動(dòng)eclipse的tomcat進(jìn)行訪(fǎng)問(wèn)時(shí)出現(xiàn)404問(wèn)題的方法

    解決在啟動(dòng)eclipse的tomcat進(jìn)行訪(fǎng)問(wèn)時(shí)出現(xiàn)404問(wèn)題的方法

    這篇文章主要介紹了解決在啟動(dòng)eclipse的tomcat進(jìn)行訪(fǎng)問(wèn)時(shí)出現(xiàn)404問(wèn)題的方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • ArrayList集合初始化及擴(kuò)容方式

    ArrayList集合初始化及擴(kuò)容方式

    這篇文章主要介紹了關(guān)于A(yíng)rrayList集合初始化及擴(kuò)容方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者

    Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者

    這篇文章主要介紹了Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot配置Https訪(fǎng)問(wèn)的詳細(xì)步驟

    SpringBoot配置Https訪(fǎng)問(wèn)的詳細(xì)步驟

    HTTP(Hypertext transfer protocal)是一種詳細(xì)規(guī)定了瀏覽器和萬(wàn)維網(wǎng)服務(wù)器之間相互通信的規(guī)則,通過(guò)因特網(wǎng)傳送萬(wàn)維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議,這篇文章主要介紹了SpringBoot配置Https訪(fǎng)問(wèn)的詳細(xì)步驟,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

根河市| 新宾| 微山县| 顺昌县| 东乡| 称多县| 神池县| 汪清县| 六安市| 江永县| 陕西省| 广水市| 龙川县| 隆昌县| 芦溪县| 通许县| 贺州市| 辰溪县| 广平县| 卢氏县| 滦南县| 石河子市| 文水县| 静海县| 托克逊县| 湘潭市| 平乡县| 大厂| 呼伦贝尔市| 玛纳斯县| 大余县| 乐山市| 会理县| 义乌市| 黎川县| 韶关市| 西乌珠穆沁旗| 衡山县| 昂仁县| 襄城县| 英山县|