每个数据库的拼接函数或连接符号都不同,例如 MySQL 的 concat 函数、Oracle 的连接符号“||”等。这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 bind 标签来解决这一问题。
bind 标签可以通过 OGNL 表达式自定义一个上下文变量。
比如,按照网站名称进行模糊查询,SQL 映射文件如下。
<select id="queryForList" resultMap="BaseResultMap">
    <bind name="pattern" value="'%'+ parameter + '%'"/>
    select <include refid="Base_Column_List"></include>
    from person where name like #{pattern}
</select>
bind 元素属性如下。
- value:对应传入实体类的某个字段,可以进行字符串拼接等特殊处理。
 - name:给对应参数取的别名。
 
以上代码中的“_parameter”代表传递进来的参数,它和通配符连接后,赋给了 pattern,然后就可以在 select 语句中使用这个变量进行模糊查询,不管是 MySQL 数据库还是 Oracle 数据库都可以使用这样的语句,提高了可移植性。
大部分情况下需要传递多个参数,下面为传递多个参数时 bind 的用法示例。
示例
本节示例基于《Mybatis简单示例程序》一节的代码实现。
PersonMapper 类中方法代码如下。
List<Person> queryForList(Person person);
SQL 映射文件代码如下。
<select id="queryForList" resultMap="BaseResultMap">
    <bind name="name" value="'%'+ name + '%'"/>
    <bind name="province" value="'%' + province + '%'"/>
    select 
    <include refid="Base_Column_List"></include>
    from person where name like #{name}
    and province like #{province}
  
</select>
测试代码如下。
    @Test
    public void testList(){
        Person condition = new Person();
        condition.setName("jack");
        condition.setProvince("广东");
        List<Person> list = personMapper.queryForList(condition);
        for(Person p : list){
            log.info("{}", p);
        }
    }
运行结果如下。
                            郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
                        
                        
                            本文链接:https://www.jhelp.net/p/si7bRomQaNJWfyss (转载请保留)。
                        
                    本站推荐
- 
                                    
                                    1071
 - 
                                    
                                    1064
 - 
                                    
                                    995
 - 
                                    
                                    990
 - 
                                    
                                    989
 
文章目录
                        
                    