https://blog.csdn.net/qq_33651286/article/details/125653634
項目開發(fā)過程中使用Mybatis-Plus的lambda 表達式假残,對其中對模糊查詢like方法開始不理解其中參數Boolean是什么作用缭贡。后邊看其他的方法都是兩個對應的,有帶Boolean參數的有不帶的辉懒。查閱資料得知:
代碼如下:
//條件封裝
QueryWrapper<FykUser> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(user.getName()), "NAME", user.getName());
queryWrapper.like(user.getEnable() != null, "ENABLE", user.getEnable());
List<FykUser> userList = userDao.selectList(queryWrapper);
這里阳惹,like方法有三個參數:
第一個參數:該參數是一個布爾類型,只有該參數是true時眶俩,才將like條件拼接到sql中莹汤;本例中,如果name字段不為空颠印,則拼接name字段的like查詢條件纲岭;
第二個參數:該參數是數據庫中的字段名;
第三個參數:該參數值字段值嗽仪;
需要說明的是荒勇,這里的like查詢是使用的默認方式,也就是說在查詢條件的左右兩邊都有%:NAME = ‘%王%'闻坚;
如果只需要在左邊或者右邊拼接%沽翔,可以使用likeLeft或者likeRight方法。
其他
在QueryWrapper類中,可以看到仅偎,還有很多條件查詢的方法跨蟹,諸如ge、le橘沥、lt窗轩、between等之類的方法,他們的傳參方式都和上面介紹的差不多座咆。
對于上面的理解痢艺,給出代碼示例:
wrapper.lambda().like(Objects.nonNull(roleId), SysRoleResource::getRoleId, roleId);//----對應SQL:role_id like ‘%1%’
wrapper.lambda().likeLeft(Objects.nonNull(roleId), SysRoleResource::getRoleId, roleId);//----對應SQL:role_id like ‘%1’
wrapper.lambda().likeRight(Objects.nonNull(roleId), SysRoleResource::getRoleId, roleId);//----對應SQL:role_id like ‘1%’
換個寫法解釋第一個參數:
if (roleId != null) {
?wrapper.lambda().like(SysRoleResource::getRoleId, roleId);?
}
擴展:
queryWrapper.lt()——小于
queryWrapper.le()——小于等于
queryWrapper.gt()——大于
queryWrapper.ge()——大于等于
queryWrapper.eq()——等于
queryWrapper.ne()——不等于
queryWrapper.betweeen(“age”,10,20)——age在值10到20之間
queryWrapper.notBetweeen(“age”,10,20)——age不在值10到20之間
queryWrapper.like(“屬性”,“值”)——模糊查詢匹配值‘%值%’
queryWrapper.notLike(“屬性”,“值”)——模糊查詢不匹配值‘%值%’
queryWrapper.likeLeft(“屬性”,“值”)——模糊查詢匹配最后一位值‘%值’
queryWrapper.likeRight(“屬性”,“值”)——模糊查詢匹配第一位值‘值%’
queryWrapper.isNull()——值為空或null
queryWrapper.isNotNull()——值不為空或null
queryWrapper.in(“屬性”,條件介陶,條件 )——符合多個條件的值
queryWrapper.notIn(“屬性”堤舒,條件,條件 )——不符合多個條件的值
queryWrapper.or()——或者
queryWrapper.and()——和
queryWrapper.orderByAsc(“屬性”)——根據屬性升序排序
queryWrapper.orderByDesc(“屬性”)——根據屬性降序排序
queryWrapper.inSql(“sql語句”)——符合sql語句的值
queryWrapper.notSql(“sql語句”)——不符合SQL語句的值
queryWrapper.esists(“SQL語句”)——查詢符合SQL語句的值
queryWrapper.notEsists(“SQL語句”)——查詢不符合SQL語句的值