MyBatis(一)

MyBatis(一),第1张

MyBatis(一) 1. #{}和${}的区别?
  • #{}相当于在SQL中拼接一个?占位符,在SQL执行之前使用PreparedStatement将?替换成参数,所以#{}是预编译处理,相对安全,能防止SQL注入;${}直接将参数拼接在SQL中
  • #{}会将参数加上一个单引号,${}不会;表的字段如果加了单引号会使order by / group by 失效,所以在这种场景中使用${}
2. 当实体类的属性名和表中的字段名不一致怎么办?
  • SQL查询出来的字段起别名,与属性名对应上
  • 使用ResultMap封装,column和property标签配置
  • 数据库通常命名为带下划线,实体类命名为驼峰命名,配置开启驼峰映射
3. 动态SQL是什么?执行原理?有哪些标签?
  1. 在XML文件中,使用标签编写动态SQL,根据标签中的逻辑判断,动态地拼接SQL
  2. 执行原理:计算表达式的值在不同的条件下拼接不同的SQL
4. Mapper接口绑定的方式有几种
  • 使用xml映射文件,接口路径与对应xml映射文件路径相同,在XML文件中使用namespace指定接口的全限定名,使用