环境
配置 | 值 |
---|---|
IDE | Intellij IDEA |
操作系统 | MacOS |
数据库 | MySQL |
无论是用 SpringBoot 整合 Mybatis 还是用 SSM 进行整合, 思路都是一样的. 第一步先看 SQL 有没有问题, 第二步去看配置文件是否完善
无报错但是模糊查询没有实现. 检查你的 sql 是否是
SELECT * FROM T_USER WHERE USER_NAME LIKE CONCAT('%',#{userName},'%') LIMIT #{start}, #{limit};
上面使用的是利用 concat
拼接, 然后你也可以拼好 string 然后传进来, 也就是传参之前, 这个 userName = "%+userName+"%"
, 如果用这种方式你的 SQL 就不用CONCAT
两个注意点
#{这里的参数}
必须与传入参数的名字一致. 我们常用的两种配置方式, 第一种 XML 进行配置, 如下图
这个 mapper.xml 中的 start
跟limit
必须与 mapper 接口的传入参数保持一致
另一种就是通过 Mybatis 注解实现
模糊部分先不用关注, 那部分后面会说怎么排查, 这部分先检查 sql 跟传参是否正确. 值得一提的是#{这里的参数}
编译之后是一个带引号的
字符串, 所以不需要再加引号
. sql 大体模板一定要与上面的保持一致
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