您当前的位置: 首页 >  mybatis

杨林伟

暂无认证

  • 4浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

64MyBatis - bind元素

杨林伟 发布时间:2019-04-12 11:13:05 ,浏览量:4

在进行模糊查询编写SQL语句的时候,如果使用“${}”进行字符串拼接,则无法防止SQL注入问题;

如果使用concat函数进行拼接,则只针对MySQL数据库有效;如果使用的是Oracle数据库,则要使用连接符号“||”。

这样,映射文件中的 SQL 就要根据不同的情况提供不同形式的实现,这显然是比较麻烦的,且不利于项目的移植。 为此,MyBatis提供了< bind>元素来解决这一问题,我们完全不必使用数据库语言,只要使用MyBatis的语言即可与所需参数连接。

代码

    
    
    
    
   		select * from t_customer
        where
        username like #{pattern_username}

述配置代码中,使用< bind>元素定义了一个name为pattern_username的变量,< bind>元素中value的属性值就是拼接的查询字符串,其中_parameter.getUsername()表示传递进来的参数(也可以直接写成对应的参数变量名,如username)。在SQL语句中,直接引用< bind>元素的name属性值即可进行动态SQL组装。

测试
   /**
     * 元素的使用:根据客户名模糊查询客户信息
     */
    @Test
    public void findCustomerByNameTest() {
        // 通过工具类生成SqlSession对象
        SqlSession session = MybatisUtils.getSession();
       
        // 创建Customer对象,封装查询的条件
        Customer customer = new Customer();
        customer.setUsername("j");
      
        // 执行SqlSession的查询方法,返回结果集
        List customers = session.selectList("com.itheima.mapper"
                + ".CustomerMapper.findCustomerByName", customer);
       
        // 输出查询结果信息
        for (Customer customer2 : customers) {
            // 打印输出结果
            System.out.println(customer2);
        }
        // 关闭SqlSession
        session.close();
    }

运行结果: 在这里插入图片描述

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.1071s