1.编程步骤
- 创建 SqlSessionFactory 对象。
- 通过 SqlSessionFactory 获取 SqlSession 对象。
- 通过 SqlSession 获得 Mapper 代理对象。
- 通过 Mapper 代理对象,执行数据库操作。
- 执行成功,则使用 SqlSession 提交事务。
- 执行失败,则使用 SqlSession 回滚事务。
- 最终,关闭会话。
2.#{} 和 ${} 的区别
${} 是 Properties 文件中的变量占位符,它可以用于 XML 标签属性值和 SQL 内部,属于字符串替换。
#{} 是 SQL 的参数占位符,Mybatis 会将 SQL 中的 #{} 替换为 ? 号, 所以,#{} 是预编译处理,可以有效防止 SQL 注入,提高系统安全性。
另外,#{} 和 ${} 的取值方式非常方便。例如:#{item.name} 的取值方式,为使用反射从参数对象中,获取 item 对象的 name 属性值,相当于 param.getItem().getName() 。
3. Mapper 接口绑定实现方式
1.通过 XML Mapper 里面写 SQL 来绑定。在这种情况下,要指定 XML 映射文件里面的 "namespace" 必须为接口的全路径名。
2.通过注解绑定,就是在接口的方法上面加上 @Select、@Update、@Insert、@Delete 注解,里面包含 SQL 语句来绑定。
3.第二种的特例,也是通过注解绑定,在接口的方法上面加上 @SelectProvider、@UpdateProvider、@InsertProvider、@DeleteProvider 注解,通过 Java 代码,生成对应的动态 SQL 。