文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.7 bind 元素
bind 元素的作用是通过 OGNL 表达式去自定义一个上下文变量,这样更方便我们使用。在我们进行模糊查询的时候,如果是 MySQL 数据库,我们常常用到的是一个 concat 用 % 和参数相连接。然而在 Oracle 数据库则是用连接符号 || ,这样 SQL 就需要提供两种形式去实现。但是有了 bind 元素,我们就完全不必使用数据库的语言,只要使用 MyBatis 的语言即可与所需参数相连。
比如我们要按角色名称进行模糊查询,我们可以把映射文件写成这样,如代码清单 5-8 所示。
代码 5-8:使用 bind 元素
<select id="findRole" resultType="com.learn.chapter5.mybatis.bean.RoleBean"> <bind name="pattern" value="'%' + _parameter + '%'" /> SELECT id, role_name as roleName, create_date as createDate, end_date as endFlag, end_flag as endFlag, note FROM t_role where role_name like #{pattern} </select>
这里的 _parameter 代表的就是传递进来的参数,它和通配符连接后,赋给了 pattern,我们就可以在 select 语句中使用这个变量进行模糊查询,不管是 MySQL 数据库还是 Oracle 数据库都可以使用这样的语句,提高了其可移植性。
我们传递的参数往往不止这么一个,我们可能传递多个参数。让我们来学习多个参数 bind 元素的用法。首先,定义接口方法,如代码清单 5-9 所示。
代码 5-9:使用 bind 元素传递多个参数
/** * 查询角色 * @param roleName 角色名称 * @param note 备注 * @return 符合条件的角色 */ public List<RoleBean> findRole(@Param("roleName")String roleName, @Param ("note")String note);
然后,定义映射文件,定义两个新的变量去执行模糊查询,如代码清单 5-10 所示。
代码 5-10:使用 bind 元素,多参数绑定
<select id="findRole" resultType="com.learn.chapter5.mybatis.bean.RoleBean"> <bind name="pattern_roleName" value="'%' + roleName + '%'" /> <bind name="pattern_note" value="'%' + note + '%'" /> SELECT id, role_name as roleName, create_date as createDate, end_date as endFlag, end_flag as endFlag, note FROM t_role where role_name like #{pattern_roleName} and note like #{pattern_note} </select>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论