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语句错误。