在学了mybatis后想加深一下印象,就把之前的一个项目部署了mybatis框架,部署mybatis框架之后项目以前的操作数据的DBHelp就可以删除了。
然后记录一下部署的时候到网上查的一些细节问题
1.映射文件中的动态sql标签如if、when等使用参数时不需要用#{ }包裹
2.获取参数有两种方式,一种是#{ },相当于PreparedStatement中替换参数的预编译功能,可以防止sql注入,还有一种是${ },它直接将值拼接到指定位置,不会预编译,但是没有加双引号,在根据表名或者列名做判断的时候用到
3.SqlSession的方法中只能添加一个Object类型的参数,所以当我们有很多个参数的时候,一般的解决办法是将参数封装到Map中传入,在映射文件中通过键获取。
4.获取基本数据类型的参数是,获取参数值时参数名可以为任意值,如#{parameter }
5.在动态sql中用参数和基本数据类型做比较时,用的时 == 运算符,但 == 是比较地址,且传入的基本数据类型参数会被自动装箱成对象,一般的解决办法是在基本数据类型后面加 .toString() 方法,可以告诉jvm比较的是值。
6.在sql语句中有些地方可能不可以使用使用使用变量,也就是不可以使用运算符,比如 limit ,这是可以使用 <bind/> 绑定标签,绑定标签可以在查询标签中申明一个变量,该变量的值可以是参数算数运算的结果。
用法<bind name="变量名" value="变量值"></bind>