亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

二、準(zhǔn)備階段

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

在這里插入圖片描述

2.表對應(yīng)的實體類

@Data
@ApiModel("用戶賬號")
public class User {

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

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

  @ApiModelProperty(value = "用戶名")
  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 = "用戶管理")
public class UserController {

  @Autowired
  private UserDao userDao;

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

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

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

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.測試

1.先獲取id為1的用戶賬號:

swagger2結(jié)果:

在這里插入圖片描述

控制臺結(jié)果:

在這里插入圖片描述

說明這里都有使用Setter方法賦值

2.再獲取id為2的用戶賬號:

swagger2結(jié)果:

在這里插入圖片描述

控制臺結(jié)果:

在這里插入圖片描述

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

3.我準(zhǔn)備在實體類中做點改變,再測試獲取id為2的用戶賬號,如下:

改變后的實體類:

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

三、結(jié)尾

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

相關(guān)文章

  • java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup)

    java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup)

    這篇文章主要介紹了java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java 動態(tài)代理的方法總結(jié)

    java 動態(tài)代理的方法總結(jié)

    這篇文章主要介紹了java 動態(tài)代理的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java內(nèi)省之Introspector解讀

    Java內(nèi)省之Introspector解讀

    這篇文章主要介紹了Java內(nèi)省之Introspector解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • JAVA匿名內(nèi)部類語法分析及實例詳解

    JAVA匿名內(nèi)部類語法分析及實例詳解

    這篇文章主要介紹了JAVA匿名內(nèi)部類語法分析及實例詳解,匿名內(nèi)部類可以使你的代碼更加簡潔,它與局部類很相似,不同的是它沒有類名,如果某個局部類你只需要用一次,那么你就可以使用匿名內(nèi)部類。對此感興趣的可以了解一下
    2020-07-07
  • 解決Spring中@Value注解取值為null問題

    解決Spring中@Value注解取值為null問題

    近期應(yīng)用中因業(yè)務(wù)迭代需要接入 user 客戶端,接入后總是啟動失敗,報注冊 user bean 依賴的配置屬性為 null,所以接下來小編就和大家一起排查分析這個問題,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • SpringBoot3-yaml文件配置方式

    SpringBoot3-yaml文件配置方式

    這篇文章主要介紹了SpringBoot3-yaml文件配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 劍指Offer之Java算法習(xí)題精講數(shù)組與字符和等差數(shù)列

    劍指Offer之Java算法習(xí)題精講數(shù)組與字符和等差數(shù)列

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • springboot項目如何使用切面記錄用戶操作日志

    springboot項目如何使用切面記錄用戶操作日志

    這篇文章主要介紹了springboot項目如何使用切面記錄用戶操作日志,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • java高效實現(xiàn)大文件拷貝功能

    java高效實現(xiàn)大文件拷貝功能

    這篇文章主要為大家詳細(xì)介紹了java高效實現(xiàn)大文件拷貝功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java中Lambda表達(dá)式之Lambda語法與作用域解析

    Java中Lambda表達(dá)式之Lambda語法與作用域解析

    這篇文章主要介紹了Java中Lambda表達(dá)式之Lambda語法與作用域解析重點介紹Lambda表達(dá)式基礎(chǔ)知識,需要的朋友可以參考下
    2017-02-02

最新評論