在进行模糊查询时,如果使用“${}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同。

例如 MySQL 的 concat 函数、Oracle 的连接符号“||”,这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 元素来解决这一问题。

在 myBatisDemo03 应用中测试 元素,具体过程如下:

1)添加 SQL 映射语句

在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

  1. <select id=”selectUserByBind” resultType=”com.po.MyUser” parameterType= “com.po.MyUser”>
  2. <bind name=”paran_uname” value=”‘%’ + uname + ‘%’”/>
  3. select * from user where uname like #{paran_uname}
  4. 2)添加数据操作接口方法

    在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:
    public List selectUserByBind(MyUser user);

    3)调用数据操作接口方法

    在 com.controller 包的 UserController 类中添加如下程序调用数据操作接口方法。

  5. // 使用bind元素查询用户信息

  6. MyUser bindmu=new MyUser();
  7. bindmu.setUname (“张”);
  8. List listByBind=userDao.selectUserByBind(bindmu);
  9. System.out.println (“bind 元素=========================”);
  10. for (MyUser myUser:listByBind) {
  11. System.out.println(myUser);
  12. }

    4)测试动态 SQL 语句

    运行 com.controller 包中的 TestController 主类,测试动态 SQL 语句。