• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gabiandlizzy

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

debug:查询数据库没有返回值但是数据库里有值怎么肥四

是这样的,写了一些简单的代码到数据库查询用户信息。
controller是这样的:

@GetMapping("{page}/{limit}")
    public Result list(@PathVariable Long page,
                       @PathVariable Long limit,
                       UserInfoQueryVo userInfoQueryVo) {
        Page<UserInfo> pageParam = new Page<>(page, limit);
        IPage<UserInfo> pageModel = userInfoService.selectPage(pageParam, userInfoQueryVo);
        return Result.ok(pageModel);

service的实现类是这样的:

@Override
    public IPage<UserInfo> selectPage(Page<UserInfo> pageParam, UserInfoQueryVo userInfoQueryVo) {
        /** UserInfoQueryVo获取条件值 */
        String name = userInfoQueryVo.getKeyword(); /** 用户名称 */
        Integer status = userInfoQueryVo.getStatus(); /** 用户状态 */
        Integer authStatus = userInfoQueryVo.getAuthStatus(); /** 认证状态 */
        String createTimeBegin = userInfoQueryVo.getCreateTimeBegin();
        String createTimeEnd = userInfoQueryVo.getCreateTimeEnd();
        /** 对条件值进行非空判断 */
        QueryWrapper<UserInfo> wrapper = new QueryWrapper<>();
        if (!StringUtils.isEmpty("name")) {
            wrapper.like("name", name);
        }
        if (!StringUtils.isEmpty(status)) {
            wrapper.eq("status", status);
        }
        if (!StringUtils.isEmpty(authStatus)) {
            wrapper.eq("auth_status", authStatus);
        }
        if (!StringUtils.isEmpty(createTimeBegin)) {
            wrapper.ge("create_time", createTimeBegin);
        }
        if (!StringUtils.isEmpty(createTimeEnd)) {
            wrapper.le("create_time", createTimeEnd);
        }
        /** 调用mapper的方法 */
        Page<UserInfo> pages = baseMapper.selectPage(pageParam, wrapper);
        pages.getRecords().stream().forEach(item -> {
            this.packageUserInfo(item);
        });
        return pages;
    }

但是返回的数据是空。
但是我自己看数据库,明明是有三个值。
我这个其实查询代码非常简单,基本上都是用mybatis-plus做的。
那到底哪里出错了呢。
我决定先看实际执行的sql语句是啥。那怎么看呢?一开始我开着debug模式,点进去看,不太行。后来就百度,百度到添加日志的方法,在配置文件里添加:

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

果然就可以打印日志了
image
我一开始还觉得这条语句里带着括号百分号啥的莫非还有什么玄机,于是还特意下载了一个翻译插件,翻译结果是:
image
然后我就研究这个name like是哪里来的,最终找到了出错的代码:

 if (!StringUtils.isEmpty("name")) {
            wrapper.like("name", name);
        }

判断是否为空的不应该是“name”而应该是name,我加了个引号当然永远为真了。
破案了。

posted on 2022-05-08 19:58  大妖怪金角大王  阅读(214)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3