mybatis-plus中自定义SQL分页,关联多表时报未明确定义列

1.网上搜了半天都是说什么原因造成的?

就是你查找的两张表有重复字段,SQL语句在查找的时候不知道你的字段是取的哪张表里的,就会报未明确定义列。

select * from table a inner join table b on a.id=b.id where id='3';

这里,他就不知道你的id字段是取的table a表,还是table b表,解决就是在id上添加a或b,看你去哪张表中取字段。

select * from table a inner join table b on a.id=b.id where a.id='3';

2.Mybatis-plus代码中可直接修改:

但是在mybatis-plus中,我们取字段都是

QueryWrapper querywrapper=new QueryWrapper();

querywrapper.eq("id","3");

要解决这个问题只需要:querywrapper.eq("a.id","3")

执行看一下是不是和这个语句“select * from table a inner join table b on a.id=b.id where a.id='3'”完全一样。

不要动不动就修改数据库字段,数据库字段是能随便改的吗?

3.mybatis-plus中dao层分页sql

@Select("select  a.*,b.id  "  +

               " from table a "  +

               " inner join table b "  +

               " on a.id=b.id "  +

                "${ew.customSqlSegment}  ")

IPage<实体类> selectpage (

        Ipage<实体类> page,

@Param(Constants.WRAPPER)QueryWrapper<实体类>querywrapper)

注意:sql语句一定要注意空格,不然,就可能出现【 b.idfrom】,导致sql语句错误。

你可能感兴趣的:(mybatis-plus中自定义SQL分页,关联多表时报未明确定义列)