[后端]Mybatis 使用注解进行模糊查询报错

环境

配置
IDEIntellij IDEA
操作系统MacOS
数据库MySQL

无论是用 SpringBoot 整合 Mybatis 还是用 SSM 进行整合, 思路都是一样的. 第一步先看 SQL 有没有问题, 第二步去看配置文件是否完善

  1. 无报错但是模糊查询没有实现. 检查你的 sql 是否是
    SELECT * FROM T_USER WHERE USER_NAME LIKE CONCAT('%',#{userName},'%') LIMIT #{start}, #{limit};
    上面使用的是利用 concat 拼接, 然后你也可以拼好 string 然后传进来, 也就是传参之前, 这个 userName = "%+userName+"%", 如果用这种方式你的 SQL 就不用CONCAT 两个注意点
    #{这里的参数}必须与传入参数的名字一致. 我们常用的两种配置方式, 第一种 XML 进行配置, 如下图
    在这里插入图片描述
    这个 mapper.xml 中的 startlimit 必须与 mapper 接口的传入参数保持一致
    在这里插入图片描述
    另一种就是通过 Mybatis 注解实现
    在这里插入图片描述
    模糊部分先不用关注, 那部分后面会说怎么排查, 这部分先检查 sql 跟传参是否正确. 值得一提的是#{这里的参数} 编译之后是一个带引号的字符串, 所以不需要再加引号. sql 大体模板一定要与上面的保持一致

  2. Bean Can not found. 这个报错是 Spring 比较常见的报错, 就是 Spring 找不到你说的这个东西. 因为你肯定是写了, 但是就是找不到.找不到的原因无非就是路径不对, 没加注解. 我们先说注解, 整合 SSM 或 SpringBoot, 找不到 Mapper 也有两个原因, 一个是你的 Mapper 接口上没有加@Mapper , 你没加这个注解, Spring 当然不知道你是谁你在哪. 第二个原因 启动类没加包扫描, 看下面这个图
    在这里插入图片描述
    这个注解就是把这个路径下的所有 mapper 纳入到 Spring 的管理之中, 你不用管它怎么管理的, Spring 很傻的只要你路径对他就能找到, 找不到就是路径不对.
    如果你确定了 Mapper 的配置也没有问题, 那么第三就是你的resultMap没有写对, resultMap两种配置方式第一种 XML 第二种注解
    在这里插入图片描述
    xml 就按照图中的文字去一个个检查
    在这里插入图片描述
    还有人会用注解去实现这个事情, 这个时候需要三个东西, 第一个@Select 你的告诉 Mybatis 你要查 还是要删 还是要更新. 第二个@ResultMap 你得告诉 Mybatis 查到的东西应该怎么搞, 搞成什么样. 第三个@Param 如果多参数一定要在这里映射下, 否则Mybatis 会按顺序给你把参数塞到 SQL 里, 它不会管你叫什么, 哪怕你第一个参数是#{userName}, 他也会把 start 这个参数给你塞到#{userName}
    这三个东西配完 还找不到, 就说明路径还有问题, 比如说 xxx 的ResultMap找不到, 这时候你检查一下是不是你写的是@ResultMap("BaseResultMap") 你发现这个名字跟 XML 中的resultMap 的 id一样呀, 为什么找不到? 只要找不到你就想路径, 然后你看 XML 中的namespace, 它不是不知道上哪里去找BaseResultMap 你就@ResultMap("org.xx.rhino.mapper.UserMapper.BaseResultMap") 这不就能找到了么

[转载请注明出处] 仅供学习使用 @author ArtistS

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值