JAVA全系列 教程
3762个小节阅读:7093.5k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
模糊查询如果不想在调用方法时参数加%,可以使用拼接参数的方式设置Sql:
xxxxxxxxxx
<select id="findByUsernameLike" parameterType="string" resultType="com.itbaizhan.pojo.User">
select * from user where username like '%${value}%'
</select>
测试方法写法如下:
xxxxxxxxxx
@Test
public void testFindByNameLike(){
List<User> users = userMapper.findByUsernameLike("尚学堂");
users.forEach(System.out::println);
}
#和$的区别:
- #表示sql模板的占位符,$表示将字符串拼接到sql模板中。
- #可以防止sql注入,一般能用#就不用$。
- ${}内部的参数名必须写value。
如果使用#
还不想在调用方法的参数中添加%
,可以使用<bind>
,<bind>
允许我们在 Sql语句以外创建一个变量,并可以将其绑定到当前的Sql语句中。用法如下:
xxxxxxxxxx
<select id="findByUsernameLike" parameterType="string" resultType="com.itbaizhan.pojo.User">
<bind name="likeName" value="'%'+username+'%'"/>
select * from user where username like #{likeName}
</select>
测试方法写法如下:
xxxxxxxxxx
@Test
public void testFindByNameLike(){
List<User> users = userMapper.findByUsernameLike("尚学堂");
users.forEach(System.out::println);
}
1. 在MyBatis中,关于#和$的说法正确是:
A $表示sql模板的占位符
B #表示sql模板的占位符
C $可以防止SQL注入
D #{}内部的参数名必须写value
2. 在MyBatis中,使用可以定义外部变量,绑定到Sql语句中:
A <bind>
B <sql>
C <if>
D <where>
1=>B 2=>A