色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

詳解Mybatis是如何把數據庫數據封裝到對象中的

瀏覽:85日期:2023-10-20 15:55:14
一、前言

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

二、準備階段1.數據表

詳解Mybatis是如何把數據庫數據封裝到對象中的

2.表對應的實體類

@Data@ApiModel('用戶賬號')public class User { @ApiModelProperty(value = '用戶id') Integer id; @ApiModelProperty(value = '密碼') String password; @ApiModelProperty(value = '用戶名') String name; @ApiModelProperty(value = '狀態') 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進行測試

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接口

詳解Mybatis是如何把數據庫數據封裝到對象中的

6.測試

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

swagger2結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

控制臺結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

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

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

swagger2結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

控制臺結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

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

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

改變后的實體類:

詳解Mybatis是如何把數據庫數據封裝到對象中的

其他地方不變,看結果。首先,swagger2結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

再看,控制臺結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

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

在此,我又冒出了一個新的想法,我想測試前端傳到后端的json數據是不是也是這個結論。還是使用上面準備的環境開始測試:

注意:實體類中@ApiModelProperty(value = '狀態') Integer type;

先把swagger2中數據設置好

詳解Mybatis是如何把數據庫數據封裝到對象中的

先看控制臺結果:

詳解Mybatis是如何把數據庫數據封裝到對象中的

再看數據庫中數據:

詳解Mybatis是如何把數據庫數據封裝到對象中的

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

三、結尾

到此這篇關于詳解Mybatis是如何把數據庫數據封裝到對象中的的文章就介紹到這了,更多相關Mybatis 數據封裝到對象 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 一级爱爱片一级毛片-一毛 一级爱做片免费观看久久 一级白嫩美女毛片免费 | 又粗又爽又色男女乱淫播放男女 | 久久日本精品一区二区免费 | 精品亚洲视频在线观看 | 香蕉在线观看999 | 男人天堂中文字幕 | 亚洲天堂二区 | 狼伊千合综网中文 | 色偷偷女男人的天堂亚洲网 | 免费va国产高清不卡大片 | 亚洲免费毛片 | 欧美成人3d动漫专区 | 久久精品免费一区二区三区 | 日本在线观看免费看片 | 国产在线精品一区二区 | a免费视频| 免费一级毛片正在播放 | 99精彩视频在线观看 | 人久热欧美在线观看量量 | 呦女精品视频 | 日韩毛片大全免费高清 | 亚洲第一网站在线观看 | 日本高清视频免费在线观看 | 欧美一区二区三区gg高清影视 | 中文字幕一区二区三区视频在线 | tom影院亚洲国产日本一区 | 精品久久久久中文字幕日本 | 免费a一毛片 | 成人午夜大片 | 曰本黄大片| 久99频这里只精品23热 视频 | 亚洲第一大网站 | 亚洲欧洲日韩综合色天使不卡 | www.久草.com| 日韩国产成人资源精品视频 | 国产第一区二区三区在线观看 | 午夜毛片不卡高清免费 | 亚洲日本欧美综合在线一 | 92看片淫黄大片看国产片 | 久久女同互慰一区二区三区 | 日本成人免费观看 |