bind元素
:
bind基本用于模糊查询。优点是可以防止注入攻击,统一各种数据库系统的格式,比如说MySQL先前要用concat进行模糊查询的拼接而Oracle用的是"||"。
bind的标签可以通过OGNL创建一个上下文变量,然后在sql中使用,其使用方式如下:
<select id="B" parameterType="String" resultType="com.itheima.po.Account">
<!--name表示他的变量名-->
<!--value是值-->
<!--_parameter是Mybatis内置的参数,代表传入的值-->
<!--'%'是sql语句中模糊查询的方法,用+号与传入值拼接起来,不要想着在下面的sql语句中拼接,行不通的我试过。-->
<bind name="n" value="'%'+_parameter+'%'"/>
select * from account where username like #{n}
</select>
测试一下:
// select bind测试
@Test
public void bindTest() throws Exception {
SqlSession session = MyBatisUtils.getSqlSession();// 获取会话
String name="王";
List<Account> users = session.selectList("com.itheima.mapper.CM1.B", name);
session.close();// 关闭会话
for (Account a : users) {
System.out.println(a.toString());
}
}
看看数据库:
看看结果:
再来举一反三一下:
<select id="B2" parameterType="String" resultType="com.itheima.po.Account">
<bind name="n" value="'%'+_parameter"/>
select * from account where username like #{n}
</select>
结果
好了,bind标签的测试就到这里了,水平有限,欢迎交流。