亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

多表聯查時數據庫有重復字段名時打印為null

老師,我數據庫user表有個name,car表也有個name,聯查的泛型是UserCarVO實體類,類里一個屬性是name,一個是carName,

在UserMapper extends BaseMapper<User>接口中的

查詢語句是@Select("select u.*,c.name from user u inner join car c on c.owner_id = u.my_id ${ew.customSqlSegment}")。

IPage<UserCarVO> selectUserPage(Page<UserCarVO> page, @Param(Constants.WRAPPER) Wrapper<UserCarVO> wrapper);

為了最后讓實體的carName對應c.name,我在carName上注解@TableField("c.name"),但是最后只能打印出用戶的name,而carName為null,(我把數據庫Car表字段改為car_name的話,就能打印出),請問怎樣讓注解生效?求老師解答,糾結好多個小時了,查論壇查百度的例子都沒有重復字段。。。

正在回答

1 回答

同學,這個有解決辦法,你給c.name在sql中設置別名就可以了,這樣寫elect u.*,c.name car_name?from user u inner join car c on c.owner_id = u.my_id ${ew.customSqlSegment}。正常的話,就會把值存到你的VO中。

2 回復 有任何疑惑可以回復我~
#1

扶阿斗的人 提問者

太棒了老師,一下子就成功了!老師,我就是好奇,想再問一下,我之前也在SQL語句中設置了字段別名 c.name cname,然后VO對應屬性carName上也注解了@TableField("cname"),但就是沒有效果,是什么原因呢?難道僅當真正的數據庫表對應的實體類上有@TableName的時候@TableField才起作用嗎?
2019-08-29 回復 有任何疑惑可以回復我~
#2

老猿 回復 扶阿斗的人 提問者

能解決你的問題就好,你說的這種情況如果不行的話,我感覺是@TableField要寫在表對應的實體類的屬性上才會生效,MP的源代碼,我也沒太研究過,對底層原理不是太了解,等以后我研究源碼時,研究明白了這個問題,再答復你。
2019-08-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

多表聯查時數據庫有重復字段名時打印為null

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號