栏目:Java Web(<--点此查看更多)Java Web 开发相关技术及框架,JSP|Servlet|Javabean|SSH|EJB|HTML|CSS|JavaScript等
  • IBatis 下的模糊查询 %张%

  • Wed Jan 09 08:48:29 CST 2013 编程者 我要收藏(...) 评论 ...
  • ibatis的关键字like查询select * from t_student where s_name '%张%';这种like语句在ibatis中怎么写,他们现在的项目是用ibatis作为持久层的框架。
  • ibatis的关键字like查询

    select * from t_student where s_name '%张%';

    这种like语句在ibatis中怎么写,他们现在的项目是用ibatis作为持久层的框架。

    我的第一反应是这样写:
    <select id="showOneStudentByName" parameterClass="String" resultMap="studentORM">
         select * from t_student where s_name like #name#
    </select>

    但是在调用中需要在参数的前后加上%,比如这样:
    return sqlMapper.queryForList("showOneStudentByName", "%"+name+"%");

    虽然这样可行,但总显得有些不协调。仔细看了ibaitis的文档后发现最好的写法是这样
    <select id="showOneStudentByName" parameterClass="String" resultMap="studentORM">
       select * from t_student where s_name like '%'||#name#||'%'
    </select>

    在调用的时候就不用去前后加%了。

    注意:sql语句不要写成select * from t_student where s_name like '%$name$%',这样极易受到注入攻击。
    网上搜了一下ibatis的关于like的使用,撇开 '%$xxx$%' 不讲。网上的解决方法如下:

    select *  
    from user 
    where username like '%'||#username#||'%'
    其实上面的语句是针对Oracle 的,对于不同数据库字符串连接符不一样。 现列举mysql

    select *  
    from user 
    where username like concat('%', #username#, '%')

  • 信息来源:http://bianchengzhe.com (举报这篇文章)
  • 好评(...) 中评(...) 差评(...)