使用mybaits通過querywrapper實現多條件查詢


 在項目中可以直接應用這段代碼,主要將其中的實體類換成自己實際需要的實體即可

@GetMapping(value = "/list")

    public Result<IPage<SysChannel>> queryPageList(SysChannel sysChannel,
                                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                   @RequestParam(name = "pageSize", defaultValue = "100000") Integer pageSize,
                                                   HttpServletRequest req) {
        Result<IPage<SysChannel>> result = new Result<IPage<SysChannel>>();
        QueryWrapper<SysChannel> queryWrapper = QueryGenerator.initQueryWrapper(sysChannel, req.getParameterMap());
        Page<SysChannel> page = new Page<SysChannel>(pageNo, pageSize);
        IPage<SysChannel> pageList = sysChannelService.page(page, queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }

 

在這里總結一下querywrapper的簡單使用方法,圖片總結摘抄自:參考鏈接

示例代碼:

   QueryWrapper<UserEntity> userWrapper = new QueryWrapper<>();
        userWrapper.and(wrapper->wrapper.eq("username", "test2").or().eq("username", "test2"))
                .or(wrapper -> wrapper.like("username", "test2").or().like("username", "test2"));

# SELECT * FROM student WHERE ( username = ? OR username = ? ) OR ( username LIKE ? OR username LIKE ? )

querywrapper提供了一個鏈式的構造方法,可以根據實際情況對查詢條件進行鏈式的定義

 

與querywrapper類似LambdaQueryWrapper同樣能夠實現條件查詢的構造

二者的區別:

querywrapper的寫法

        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .eq(StringUtils.isNotBlank(user.getName()), "nick", user.getName())
                .eq(user.getId() != null,"id", user.getId());
        List<User> userList = userDao.selectList(wrapper);

LambdaQueryWrapper的寫法

 LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
                .eq(StringUtils.isNotBlank(user.getName()), User::getName, user.getName())
                .eq(user.getId() != null, User::getId, user.getId());
        List<User> userList = userDao.selectList(wrapper);

通過對比會發現querywrapper中需要填入的是一個對應的字段值,如果這其中的字段值出現錯誤,在實際運行過程中就會出現錯誤,增加排查錯誤的時間,而LambdaQueryWrapper使用的是類似於類對象的形式,通過類的方式就能進行約束,如果寫法錯誤,在編譯階段就能夠明顯看出來,這就在一定程度上減少了錯誤的發生

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM