<tfoot id='EDjUZ'></tfoot>
  • <i id='EDjUZ'><tr id='EDjUZ'><dt id='EDjUZ'><q id='EDjUZ'><span id='EDjUZ'><b id='EDjUZ'><form id='EDjUZ'><ins id='EDjUZ'></ins><ul id='EDjUZ'></ul><sub id='EDjUZ'></sub></form><legend id='EDjUZ'></legend><bdo id='EDjUZ'><pre id='EDjUZ'><center id='EDjUZ'></center></pre></bdo></b><th id='EDjUZ'></th></span></q></dt></tr></i><div id='EDjUZ'><tfoot id='EDjUZ'></tfoot><dl id='EDjUZ'><fieldset id='EDjUZ'></fieldset></dl></div>

        <legend id='EDjUZ'><style id='EDjUZ'><dir id='EDjUZ'><q id='EDjUZ'></q></dir></style></legend>
          <bdo id='EDjUZ'></bdo><ul id='EDjUZ'></ul>

        <small id='EDjUZ'></small><noframes id='EDjUZ'>

      1. MybatisPlus查询条件为空字符串或null问题及解决

        时间:2023-12-06

          <tbody id='iJNQC'></tbody>

        <small id='iJNQC'></small><noframes id='iJNQC'>

          <i id='iJNQC'><tr id='iJNQC'><dt id='iJNQC'><q id='iJNQC'><span id='iJNQC'><b id='iJNQC'><form id='iJNQC'><ins id='iJNQC'></ins><ul id='iJNQC'></ul><sub id='iJNQC'></sub></form><legend id='iJNQC'></legend><bdo id='iJNQC'><pre id='iJNQC'><center id='iJNQC'></center></pre></bdo></b><th id='iJNQC'></th></span></q></dt></tr></i><div id='iJNQC'><tfoot id='iJNQC'></tfoot><dl id='iJNQC'><fieldset id='iJNQC'></fieldset></dl></div>

            • <legend id='iJNQC'><style id='iJNQC'><dir id='iJNQC'><q id='iJNQC'></q></dir></style></legend><tfoot id='iJNQC'></tfoot>
                <bdo id='iJNQC'></bdo><ul id='iJNQC'></ul>

                1. 首先,我们需要了解 MybatisPlus 中对于查询条件的处理方式。当查询条件为 null 时,MyBatisPlus 默认会将该条件去除,这就导致了当查询条件为 ""(空字符串) 时,MyBatisPlus 会把该条件去除,而我们实际上希望它作为查询条件之一。

                  为了解决这个问题,我们需要明确几个概念:

                  1. QueryWrapper:MyBatisPlus 提供的实体查询构造器的父类,用于构造查询条件。

                  2. LambdaQueryWrapper:QueryWrapper 的一种简化写法,使用 Lambda 表达式进行字段匹配,目前较为流行。

                  3. ObjectUtils.isNotEmpty():Spring 提供的工具类,用于判断对象是否为空。

                  以上概念在本篇攻略中将被反复提及。

                  针对上述 MybatisPlus 查询条件为空字符串或 null 问题,我们可以分为两种情况进行解决。

                  1. 针对 LambdaQueryWrapper 的情况:

                  解决方法为:在 LambdaQueryWrapper 中使用 StringUtils.isNotBlank() 判断该条件值是否为空,如果不为空,则将该条件作为查询条件,例如:

                  LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
                  wrapper.eq(StringUtils.isNotBlank(name), User::getName, name)
                         .eq(age != null, User::getAge, age)
                         .eq(StringUtils.isNotBlank(email), User::getEmail, email);
                  List<User> users = userMapper.selectList(wrapper);
                  

                  上述代码中,使用了 StringUtils.isNotBlank() 判断了 name 和 email 是否为空字符串,如果不为空,则将其作为查询条件,否则不参与查询。

                  1. 针对 QueryWrapper 的情况:

                  解决方法为:使用 ObjectUtils.isNotEmpty() 方法判断该条件值是否为空,如果不为空,则将该条件作为查询条件,例如:

                  QueryWrapper<User> wrapper = new QueryWrapper<>();
                  wrapper.eq(ObjectUtils.isNotEmpty(name), "name", name)
                         .eq(ObjectUtils.isNotEmpty(age), "age", age)
                         .eq(ObjectUtils.isNotEmpty(email), "email", email);
                  List<User> users = userMapper.selectList(wrapper);
                  

                  上述代码中,使用了 ObjectUtils.isNotEmpty() 判断了 name、age 和 email 是否为空,如果不为空,则将其作为查询条件,否则不参与查询。

                  注意:QueryWrapper 中的字段名需要使用字符串类型,而 LambdaQueryWrapper 中的字段则需要用方法引用。此处需要注意区分。

                  通过以上两个示例可以看出,使用 StringUtils.isNotBlank() 或 ObjectUtils.isNotEmpty() 方法都可以解决 MybatisPlus 查询条件为空字符串或 null 问题。具体使用哪种方法,需要根据实际场景来进行选择。

                  上一篇:Mybatis执行多条语句/批量更新方式 下一篇:Django中更改默认数据库为mysql的方法示例

                  相关文章

                  <small id='79BtJ'></small><noframes id='79BtJ'>

                  • <bdo id='79BtJ'></bdo><ul id='79BtJ'></ul>
                2. <tfoot id='79BtJ'></tfoot>
                    <i id='79BtJ'><tr id='79BtJ'><dt id='79BtJ'><q id='79BtJ'><span id='79BtJ'><b id='79BtJ'><form id='79BtJ'><ins id='79BtJ'></ins><ul id='79BtJ'></ul><sub id='79BtJ'></sub></form><legend id='79BtJ'></legend><bdo id='79BtJ'><pre id='79BtJ'><center id='79BtJ'></center></pre></bdo></b><th id='79BtJ'></th></span></q></dt></tr></i><div id='79BtJ'><tfoot id='79BtJ'></tfoot><dl id='79BtJ'><fieldset id='79BtJ'></fieldset></dl></div>

                    <legend id='79BtJ'><style id='79BtJ'><dir id='79BtJ'><q id='79BtJ'></q></dir></style></legend>