一、关于mybatis

1.com.mysql.cj.exceptions.WrongArgumentException: SQL String cannot be empty

代码如下(示例):

1
2
你的mapper.xml文件里有个语句只写了比如<select什么什么的标签>里面没有sql语句,吧sql语句补上。
例:<select id="我是id" resultMap="我是结果集">这里没写语句汇报这个错</select>

2.Parameter index out of range (1 > number of parameters, which is 0).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
你的mapper.xml文件里有个语句的入参类型不对具体方式参考下图:
#{}与${}两者都可以在mybatis中用在输入映射
#{}和${}的区别:
#{}是预编译处理,
${}是字符串替换。

mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。

补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。

sql注入是什么:
例如:用户输入的账号密码在代码中是以字符串拼接的方式生成查询语句的,这样用户输入的内容很容易改变我们的原查询代码,这就相当一一个数据库注入问题。
我们验证密码和账号的时候,如果用户在输入密码的时候 输入 or 1=1;那不管他输入的密码是什么都可以通过。

3.Invalid bound statement (not found):

1
应该是你的配置文件*.xml文件的路径错了

4.(很长一串最后是)Cause: java.lang.ClassNotFoundException: Cannot find class: bean.XXX

1
2
3
这个问题最狗卡我将近一天,
你那个mapper.xml里注入的bean/model类型没有根据路径映射进去
,检查一下入参出参是不是写的都对。

这里便于写作的时候复制格式

1
2
3
4
5
6
7
8
## 2.模板格式

<font color=#999AAA >代码如下(示例):



​```c
这里便于写作的时候复制格式