转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html
前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
1. 输入映射
通过parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo的包装类型。
1.1 #{}与${}
#{}实现的是向prepareStatement中的预处理语句设置参数值,sql语句中#{}表示一个占位符即?
<select id="findUserById" parameterType="int" resultType="user"> select * from user where id=#{id}</select>
使用占位符#{}可以有效防止sql注入,在使用时不需要关系参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个类型值,#{}括号可以是value或其它名称。
${}和#{}不同,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。使用${}不能防止sql注入,但是有时用${}会非常方便,如下例子:
<select id="findUserByName" parameterType="java.lang.String" resultType="joanna.yan.mybatis.entity.User"> select * from user where username LIKE '%${value}%' </select>
如果本例子使用#{}则传入的字符串中必须要有%,而%是人为拼接在参数中,显然有点麻烦,如果采用${}在sql中拼接为%的方式则在调用mapper接口传递参数就方便很多。
//如果使用占位符号则必须人为在传参数中加%List<User> list = userMapper.selectUserByName("%管理员%");
网友评论