第四章 CRUD操作 第2节 MyBatis中的模糊查询
条评论4.2 模糊查询
4.2.1 占位符
配置文件
1
2
3
4<!-- 根据名称模糊查询 -->
<select id="findByName" resultType="com.itheima.domain.User" parameterType="String">
select * from user where username like #{username}
</select>在控制台输出的执行SQL语句如下:
在配置文件中没有加入%来作为模糊查询的条件,所以在传入字符串实参时,就需要给定模糊查询的标识%。
配置文件中的#{username}也只是一个占位符,所以SQL语句显示为“?”。
4.2.2 %查询
配置文件
1
2
3<select id="findByName" parameterType="string" resultType="com.itheima.domain.User">
select * from user where username like '%${value}%'
</select>在控制台输出的执行SQL语句如下:
可以发现,我们在程序代码中就不需要加入模糊查询的匹配符%了,这两种方式的实现效果是一样的,但执行的语句是不一样的。
4.2.3 #{}与${}的区别
#{}
表示一个占位符号,通过#{}
可以实现preparedStatement
向占位符中设置值,自动进行java类型和jdbc类型转换,#{}
可以有效防止sql注入。 #{}
可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}
括号中可以是value或其它名称。
${}
表示拼接sql串 通过${}
可以将parameterType
传入的内容拼接在sql中且不进行jdbc类型转换,${}
可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}
括号中只能是value。
4.2.4 模糊查询的${value}源码分析
TextSqlNode类的源码:
这就说明了源码中指定了读取的key的名字就是”value”,所以我们在绑定参数时就只能叫value的名字了。
本文标题:第四章 CRUD操作 第2节 MyBatis中的模糊查询
文章作者:foreverSFJ
发布时间:2019-09-11 21:26:51
最后更新:2019-09-11 21:26:51
原始链接:Notes/Java/Persistence/Mybatis/04_02 模糊查询.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!
分享