1.2在mybatis中,${} 和 #{} 的区别是什么
${}对应的是Statement 实现原理是字符串拼接,并没有将传入的数据经行特殊字符转义有sql 注入的风险 #{}对应的是preparedStatement将sql语句进行规范预编译,将传入的数据视为整体进行验证,不存在特殊字符,从而防止了sql注入;
{} 是占位符,预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性。
1.7如何获取自动生成的(主)键值?
1.4在mybatis中,resultType和ResultMap的区别是什么
resultMap可以对返回的参数进行配置,mybatis可以进行驼峰自动转换,当数据库字段和Java对象字段不满足驼峰(列名不匹配),可以通过resultMap这里来配置,进行字段匹配。
如果数据库结果集中的列名和要封装实体的属性名完全一致的话用 resultType 属性
如果数据库结果集中的列名和要封装实体的属性名有不一致的情况用 resultMap 属性,通过resultMap手动建立对象关系映射,resultMap要配置一下表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来
1.5在Mybatis中你知道的动态SQL的标签有哪些?作用分别是什么?
setting 去除多余的逗号
where choock when foreach; if
1.
2.
3.
4.
5.