1.模糊查询时,如果想把多个or当做一个条件比如
示例1:select * from table where age=20 and (level=1 or levle=2 or name=“shadiao”)
记得用andNew(),andNew()相当于新建了一个括号.
补充的小知识点:
示例2:select * from table where age=20 or level=1 or levle=2 or name="shadiao’’
这个示例2的sql里 age=20是一个充分不必要条件,而示例1的sql里age=20是个必要条件
2.如果andNew()后面跟了一个and;
比如
dev.andNew().like("name",gateway.getDescription(), SqlLike.DEFAULT)
.or().like("mac",gateway.getDescription(), SqlLike.DEFAULT)
.or().like("ip",gateway.getDescription(), SqlLike.DEFAULT);
dev.and().eq("organization_id",orgId);
这个orgId会加入andNew()的括号中,所以不要瞎用and
下面是个正确的示例
@Override
public Page<UnionGateway> findAllGateway(int currentPage, int pageSize, UnionGateway gateway, Users user) {
//根据用户查询所属组织
int orgId = user.getOrg();
Page<UnionGateway> page = new Page<>(currentPage, pageSize);
EntityWrapper<UnionGateway> dev = new EntityWrapper(gateway);
dev.setEntity(new UnionGateway());
//!"".equals(gateway.getDescription())
if (null!=gateway.getDescription() && !gateway.getDescription().equals("") ){
dev.andNew().like("name",gateway.getDescription(), SqlLike.DEFAULT)
.or().like("mac",gateway.getDescription(), SqlLike.DEFAULT)
.or().like("ip",gateway.getDescription(), SqlLike.DEFAULT);
}
if (null!=gateway.getType() && !gateway.getType().equals("")){
dev.eq("type",gateway.getType());
}
if(!user.getRole().equals("susys")){
dev.eq("organization_id",orgId);
}
dev.eq("is_delete",gateway.getIsDelete());
dev.orderBy("create_time desc");
Page<UnionGateway> getwayPage = iUnionGatewayService.selectPage(page, dev);
return getwayPage;
}