电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

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

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

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

6.測試

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

swagger2結(jié)果:

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

控制臺結(jié)果:

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

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

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

swagger2結(jié)果:

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

控制臺結(jié)果:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

詳解Mybatis是如何把數(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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 贵州自考_贵州自学考试网 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 发电机价格|发电机组价格|柴油发电机价格|柴油发电机组价格网 | 家德利门业,家居安全门,别墅大门 - 安徽家德利门业有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 不干胶标签,不干胶标签纸_厂家-山东同力胶粘制品 |