最近搜索

MyBatisPush 模糊 搜索 问题

浏览:173
管理员 2024-03-18 16:02

我搜索 head 是 一厂的某个设备模糊搜索(head是下拉 选择厂)。 

 这时候我把二厂 三厂 类似名子也搜索出来了。   所以说我们这个模糊查询也要改一下。




要同时搜索`headId`和`q`,并且确保`headId`条件始终生效,您可以将这两个条件分别设置,
并使用`and()`逻辑运算符连接它们。这样可以确保同时满足`headId`和`q`条件的记录被正确筛选出来。
以下是您可以修改的代码示例:


```java
@Override
public Page<Shebei> list(Map<String, Object> map, Integer page, Integer limit) {
    Page<Shebei> pageBean = new Page<Shebei>(page, limit);
    LambdaQueryWrapper<Shebei> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.orderByAsc(Shebei::getOrderNo);

    if (map.get("headId") != null) {
        queryWrapper.eq(Shebei::getHeadId, map.get("headId"));
    }

    if (map.get("q") != null) {
        queryWrapper.and(wrapper -> wrapper
                .like(Shebei::getName, map.get("q"))
                .or()
                .like(Shebei::getPos, map.get("q"))
                .or()
                .like(Shebei::getXinghao, map.get("q"))
                .or()
                .like(Shebei::getWei, map.get("q"))
        );
    }

    // 添加其他条件的代码...

    Page<Shebei> page2 = shebeiMapper.selectPage(pageBean, queryWrapper);
    return page2;
}
```

在上述代码中,我们使用`and()`逻辑运算符将`headId`和`q`条件连接在一起,确保这两个条件同时生效。
这样可以保证在搜索时同时考虑`headId`和`q`条件,且`headId`条件不会被覆盖。您可以根据需要继续添加其他条件。





我之前代码是这样的


模糊查询不能使用like  要使用and

@Override
    public Page<Shebei> list(Map<String, Object> map, Integer page, Integer limit) {
        Page<Shebei> pageBean = new Page<Shebei>(page, limit);
        LambdaQueryWrapper<Shebei> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByAsc(Shebei::getOrderNo);
        if( map.get("headId")!=null){
            queryWrapper.eq(Shebei::getHeadId,map.get("headId"));
        }
        if( map.get("recordHeadId")!=null){
            queryWrapper.eq(Shebei::getRecordHeadId,map.get("recordHeadId"));
        }

        if( map.get("name")!=null){
            queryWrapper.eq(Shebei::getName,map.get("name"));
        }
        if( map.get("xinghao")!=null){
            queryWrapper.eq(Shebei::getXinghao,map.get("xinghao"));
        }
        if( map.get("pos")!=null){
            queryWrapper.eq(Shebei::getPos,map.get("pos"));
        }
        if( map.get("wei")!=null){
            queryWrapper.eq(Shebei::getWei,map.get("wei"));
        }

        if( map.get("type")!=null){
            queryWrapper.eq(Shebei::getType,map.get("type"));
        }
        if( map.get("state")!=null){
            queryWrapper.eq(Shebei::getState,map.get("state"));
        }

        if( map.get("q")!=null){
            queryWrapper.like(Shebei::getName,map.get("q"))
                    .or()
                    .like(Shebei::getPos,map.get("q"))
                    .or()
                    .like(Shebei::getXinghao,map.get("q"))
                    .or()
                    .like(Shebei::getWei,map.get("q"))
            ;
        }


        //参数1分页 参数2分页条件。
        Page<Shebei> page2 = shebeiMapper.selectPage(pageBean, queryWrapper);
        //总记录total
        return  page2;
    }


联系站长

站长微信:xiaomao0055

站长QQ:14496453