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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

二、準(zhǔn)備階段1.數(shù)據(jù)表

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

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

@Data@ApiModel('用戶賬號(hào)')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('獲取用戶賬號(hào)') public User getUser(@PathVariable @ApiParam('用戶id') Integer id) { return userDao.selectOne(id); } @PostMapping('/setUser') @ApiOperation('添加用戶賬號(hào)') public void setUser(@RequestBody User user) { userDao.insert(user); }}

圖方便,我就將UserDao直接注入U(xiǎn)serController層中,其中使用到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接口

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

6.測試

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

swagger2結(jié)果:

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

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

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

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

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

swagger2結(jié)果:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、結(jié)尾

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

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 91香蕉国产线在线观看免费 | 精品久久久久久久 | 免费国产99久久久香蕉 | 边接电话边做国语高清对白 | 国产欧美一区视频在线观看 | 九九九精品视频 | 欧美不卡视频 | 亚洲天堂免费视频 | 久草在线观看福利 | 九九免费精品视频 | 好吊色37pao在线观看 | 男人的天堂官网 | 日韩欧美在线播放视频 | 真人一级毛片免费完整视 | 欧美日韩亚洲成色二本道三区 | japanese色系国产在线高清 | 精品一区二区三区在线视频观看 | 国产日韩在线观看视频 | 欧美日韩亚洲精品一区 | 久久综合一本 | 日本三级香港三级人妇 m | 日韩一级在线视频 | 国产成人久久久精品一区二区三区 | 亚洲欧美日韩成人一区在线 | 99精品欧美一区二区三区 | 国产高清精品在线 | 亚洲欧洲国产成人综合一本 | 国产小视频在线高清播放 | 欧美日韩一区二区三区免费不卡 | 久久91亚洲精品久久91综合 | 99爱视频精品免视看 | 在线视频一区二区三区三区不卡 | 亚洲系列中文字幕一区二区 | 国产精品极品美女自在线看免费一区二区 | 欧美孕交视频 | 国产精品欧美亚洲韩国日本不卡 | 99国产精品九九视频免费看 | 久草视频免费看 | 久久999精品 | 成人网在线免费观看 | 一级真人毛片 |