MyBatis bind 标签
1、MyBatis bind 标签的作用
bind 标签可以用来在映射文件中定义变量,然后将输入参数中的值拼接其他字符串后组成新的字符串赋值给该变量。
2、MyBatis bind 标签的应用场景
bind 标签最常用的场景是模糊查询。
3、MyBatis bind 标签的使用过程
第一步:编写接口。
public List<Employee> selectEmployeeLikeName(Employee e){}
第二步:设置变量。bind 标签可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。如下所示:
<select id="selectEmployeeLikeName" resultType="cn.mybatis.domain.Employee" parameterType="cn.mybatis.domain.Employee">
<bind name="pattern" value="'%'+_parameter.getName() + '%'" />
SELECT * FROM tb_employee WHERE loginname LIKE #{pattern}
</select>
备注:参数名称必须是
_parameter
,表示传入的查询对象Employee,否则会提示异常。
第三步:设置查询参数。
// 根据传入的参数进行模糊查询
List<Employee> selectEmployeeLikeName(Employee employee);
public void testSelectEmployeeLikeName(SqlSession session)
{
EmployeeMapper em = session.getMapper(EmployeeMapper.class);
Employee employee = new Employee();
// 设置模糊查询的参数
employee.setName("o");
List<Employee> list = em.selectEmployeeLikeName(employee);
System.out.println(list);
}
测试selectEmployeeLikeNtme方法,控制台显示如下:
DEBUG [main]==> Preparing: SELECT * FROM tb_ employee WHERE loginname LIKE ?
DEBUG [main]==> Parameters :%o%(String)
DEBUG [main]==> Total :2
Employee [id=2,loginname=rose,password=123456,name=露丝,sex=女,age=21,phone=13902018888,sal=6800.0,state=ACTIVE]
Employee [id=3,loginname=tom,password=123456,name=汤姆,sex=男,age=25,phone=13902017777,sal=8800.0,state=ACTIVE]
可以看到,执行的sql语句是一个like模糊查询语句,返回的是loginname中包含“o”的所有数据。