10.2 MyBatis动态SQL 10.2.6 bind标签
bind标签元素可以从OGNL表达式创建一个变量并将其绑定到上下文。
实例
xml标签
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | <select
 id="seletEmployeeLikeName"
 resultType="domain.Employee">
 
 
 
 
 
 
 <bind
 name="pattern"
 value="_parameter.getName()+'__'"/>
 
 select * from tb_employee where loginname like #{pattern}
 </select>
 
 | 
bind标签解释
创建OGNL表达式并绑定到上下文的pattern属性中
- _parameter表示传递的- Employee对象
- _parameter.getName()表示调用参数(- Employee对象)的- getName方法
- 两个下划线__是like子句的通配符,一个下划线可以匹配一个字符,两个下划线表示可以匹配两个字符
- like子句还有一个通配符%(百分号)这个通配符可以匹配任意多个字符
 
- 整个表达式表示匹配以_parameter.getName()获取到的员工名字开通,并且后面还有两个任意字符的字符串
mapper接口方法
| 1
 | List<Employee> seletEmployeeLikeName(Employee employee);
 | 
测试类
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | public class BindTest {public static void main(String[] args)
 {
 SqlSession sqlSession = null;
 
 sqlSession = SqlSessionFratoryTools.getSqlSession();
 
 EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
 Employee find = new Employee();
 find.setName("xiao");
 List<Employee> employees = employeeMapper.seletEmployeeLikeName(find);
 employees.forEach(employee -> System.out.println("    " + employee));
 }
 }
 
 | 
运行结果:
| 12
 3
 4
 
 | DEBUG [main] ==>  Preparing: select * from tb_employee where loginname like ? DEBUG [main] ==> Parameters: xiao__(String)
 DEBUG [main] <==      Total: 1
 Employee [id=3, loginname=xiaoli, password=xiaoli, name=小丽, sex=女, age=23, phone=123456789123, sal=7800.0, state=active]
 
 | 
成功查询出登录名以xiao开头,并且后面只有两个字符的员工.
原文链接: 10.2 MyBatis动态SQL 10.2.6 bind标签