为了账号安全,请及时绑定邮箱和手机立即绑定

使用条件构造器多表联查,返回的结果需要有两张表的数据,请问这种老师可以写一个例子吗?

使用条件构造器多表联查,返回的结果需要有两张表的数据,请问这种老师可以写一个例子吗?

正在回答

3 回答

通过自定义方法可以实现多表情况下还使用条件构造器,我举个使用注解的例子,sql写在xml中也可以。

@Select("select a.*,b.* from table1 a inner join table2 b on a.id = b.id ${ew.customSqlSegment}")
List<MyVO> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);
要注意,条件构造器中的条件名参数需要加表名或表别名,要不容易出错。例如 wrapper.eq("a.name","张良")


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

扶阿斗的人

还好有这个例子哈哈,要不然完全不懂多表怎么写,谢谢老师
2019-08-28 回复 有任何疑惑可以回复我~
#2

老猿 回复 扶阿斗的人

不客气同学,能解决你的问题就好
2019-08-28 回复 有任何疑惑可以回复我~
#3

扶阿斗的人

老师,查出来的结果的泛型是entity,而entity要想拿到表的内容必须对应一张表,那两张表联查返回哪个entity?总不能数据库再建个联立表然后建个联立entity吧?比如User表(id,name,age),Car表(id,name,owner_id)。@Select("select u.*,c.name from user u inner join car c on c.owner_id = u.my_id ${ew.customSqlSegment}")。
2019-08-28 回复 有任何疑惑可以回复我~
#4

扶阿斗的人

字数限制,续接: IPage<User> selectUserPage(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper);最后取出来的还只有User的内容,想取User对应的car的name不知道怎么取...而且您视频里的User泛型是一用从头用到底,多表联查时要改泛型的话是改哪里的呢?
2019-08-28 回复 有任何疑惑可以回复我~
#5

扶阿斗的人 回复 老猿

老师,我User字段有个name,Car表也有个name,联查的泛型UserCarVO实体类里一个属性是name,一个是carName,在name上注解@TableField("c.name"),在carName上注解@TableField("c.name"),但是最后只能打印出用户的name,而carName为null,(我把数据库Car表字段改为car_name的话,就能打印出),请问怎样让注解生效?
2019-08-29 回复 有任何疑惑可以回复我~
#6

老猿 回复 扶阿斗的人

不是非得返回实体,自定义的类也可以的
2019-08-29 回复 有任何疑惑可以回复我~
#7

老猿 回复 扶阿斗的人

关于这个carName的问题,我在你的问题贴了回答了,你看看我的办法能不能解决问题
2019-08-29 回复 有任何疑惑可以回复我~
#8

老猿 回复 扶阿斗的人

多变联查,可以改Wrapper的泛型和IPage对象的泛型。但是Wrapper我记得不能用lambda的Wrapper,使用Lambda的Wrapper可能会报错。
2019-08-29 回复 有任何疑惑可以回复我~
查看5条回复

如果有两个where条件, ${ew.customSqlSegment}怎么放两个

0 回复 有任何疑惑可以回复我~

多表好像不行啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

使用条件构造器多表联查,返回的结果需要有两张表的数据,请问这种老师可以写一个例子吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信