日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法

發(fā)布時(shí)間:2024/1/23 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果兩表聯(lián)查,主表和明細(xì)表的主鍵都是id的話,明細(xì)表的多條只能查詢出來第一條。

造成以上情況可能的原因:

1、級(jí)聯(lián)查詢的時(shí)候,主表和從表有一樣的字段名的時(shí)候,在mysql上命令查詢是沒問題的。但在mybatis中主從表需要為相同字段名設(shè)置別名。設(shè)置了別名就OK了。

例子:

主表Standard, 從表StandEntity,均有名為id的字段

1

2

3 (依據(jù)下面的select中更名的字段id別名se_id,在此將相同的字段名改為別名)4

5

6

7

8

9

10

11

12 select

13 standard.*,14 standard_entity.id se_id,(在此將兩表中相同的字段名id改為別名se_id,對(duì)應(yīng)的上面collection部分也需要更改)15 standard_entity.stand_id,16 standard_entity.stand_name,17 standard_entity.entity_name18 from

19 standard INNER JOIN standard_entity on standard.id =standard_entity.stand_id20

2、一對(duì)多不能用Association,要用Collection。

根據(jù)經(jīng)驗(yàn),使用association這個(gè)元素很容易出錯(cuò),建議在resultMap中先換一種寫法,不要用association。修改測(cè)試一下,如果成功的話,就基本可以去頂是association的問題了,之后查一下association詳細(xì)資料,應(yīng)該能解決。如果不是association的問題,就調(diào)查一下配置文件等等,總能夠解決的。

3、resultMap配置有問題

bean代碼如下:

1 public classQueryVO {2

3 privateAppUser appuser;4

5 privateTb tb;6

7 publicAppUser getAppuser() {8 returnappuser;9 }10

11 public voidsetAppuser(AppUser appuser) {12 this.appuser =appuser;13 }14

15 publicTb getTb() {16 returntb;17 }18

19 public voidsetTb(Tb tb) {20 this.tb =tb;21 }22 }

mapper.xml配置:

1

2 SELECT3 xpro_sys_tb.*,4 xpro_sys_app_user.*

5 FROM6 xpro_sys_tb,7 xpro_sys_app_user8 WHERE xpro_sys_tb.author_id =

9 xpro_sys_app_user.USER_ID10

11

12

13

14

15

16

以上代碼導(dǎo)致的結(jié)果是查詢出來的總是最后一條數(shù)據(jù),類似后面數(shù)據(jù)覆蓋了之前數(shù)據(jù)的現(xiàn)象。

發(fā)現(xiàn)問題的關(guān)鍵在于resultMap中如果不定義類似主鍵之類的能夠區(qū)分每一條結(jié)果集的字段的話,會(huì)引起后面一條數(shù)據(jù)覆蓋前面一條數(shù)據(jù)的現(xiàn)象。

最終將resultMap中添加id,并相應(yīng)在bean中添加該字段,代碼如下,問題解決。

1 public classQueryVO {2

3 privateInteger id;4

5 privateAppUser appuser;6

7 privateTb tb;8

9 publicAppUser getAppuser() {10 returnappuser;11 }12

13 public voidsetAppuser(AppUser appuser) {14 this.appuser =appuser;15 }16

17 publicTb getTb() {18 returntb;19 }20

21 public voidsetTb(Tb tb) {22 this.tb =tb;23 }24

25 publicInteger getId() {26 returnid;27 }28

29 public voidsetId(Integer id) {30 this.id =id;31 }32

33 @Override34 publicString toString() {35 return "QueryVO [id=" + id + ", appuser=" + appuser + ", tb=" + tb + "]";36 }37 }

mapper.xml代碼:

1

2 SELECT3 xpro_sys_tb.*,4 xpro_sys_app_user.*

5 FROM6 xpro_sys_tb,7 xpro_sys_app_user8 WHERE xpro_sys_tb.author_id =

9 xpro_sys_app_user.USER_ID10

11

12

13

14

15

16

17

總結(jié)

以上是生活随笔為你收集整理的mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。