zoukankan      html  css  js  c++  java
  • mybatis学习笔记

    一、mybatis模糊查找的几种写法(转载):

    1. sql中字符串拼接

       SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%');

     

    2. 使用 ${...} 代替 #{...}

       SELECT * FROM tableName WHERE name LIKE '%${text}%';

     

    3. 程序中拼接

       Java

       // String searchText = "%" + text + "%";

       String searchText = new StringBuilder("%").append(text).append("%").toString();

       parameterMap.put("text", searchText);

     

       SqlMap.xml

       SELECT * FROM tableName WHERE name LIKE #{text};

     

    4. 大小写匹配查询

       SELECT *  FROM TABLENAME  WHERE UPPER(SUBSYSTEM) LIKE '%' || UPPER('jz') || '%'

       或者 

       SELECT *   FROM TABLENAME  WHERE LOWER(SUBSYSTEM) LIKE '%' || LOWER('jz') || '%'

    在mybatis模糊查找时出现There is no getter for property named 'teacherName' in 'class java.lang.String'

    错误写法:

    1 <select id="findAllProjectLevelByTeacher"  parameterType="String" resultType="String">
    2 SELECT DISTINCT Level FROM project WHERE TeacherName LIKE '%${teacherName}%'
    3 </select>

    解决方法:这种情况下,不管函数里面参数名是什么,都要改为_parameter

    正确写法:

    1 <select id="findAllProjectLevelByTeacher"  parameterType="String" resultType="String">
    2 SELECT DISTINCT Level FROM project WHERE TeacherName LIKE '%${_parameter}%'
    3 </select>

    二、mybatis查询时多参数的传递方法

    1、通过hashmap来传,在XML中配置好对应的parameterMap。通过属性<select>的parameterMap或者parameterType调用即可

    注意:在定义函数时,参数也应该是hashmap类型的

    2、XML中直接用#{1},#{2}...等方法把对应的参数传入,注意定义函数时,需用@Param("")对应把每个参数与XML中的参数名对应起来。

     XML:

    1 <select id="findAllProjectNameByLevel" resultType="String">
    2 SELECT DISTINCT Name FROM project WHERE TeacherName LIKE '%${teacherName}%' AND Level LIKE '%${level}%' 
    3 </select>

    DAO:

     1 List<String> findAllProjectNameByLevel(@Param("teacherName")String teacherName,@Param("level")String level); 

    注意:模糊查找时,只有一个参数的时候用_parameter,在模糊查找条件只有一个,即一个Like '%%',但还有其他参数时,如 select *  from student where sName like '%参数1%' limit 参数2,参数3,这种情况也是和多参数传递方法一样的

     三、mybatis查询语句中不能出现大于(>)和小于(<)

    如果在mybatis中需要用到大于(>)和小于(<),需用转义后使用:

       &lt;          < 
        &gt;          >  
        &lt;&gt;   <>
        &amp;      & 
        &apos;      '
        &quot;      "

     也可以改写一下mybatis查询代码

    如,错误语句

    select *from student where grade1>#{grade} and grade2<#{grade}
    

    如果这样写,会报:The content of elements must consist of well-formed character data or markup

     正确写法:

    SELECT * FROM tax WHERE
      <![CDATA[grade1 > #{grade}]]>  AND <![CDATA[grade2< #{grade}]]>
    

      

     
  • 相关阅读:
    linux下/proc/sysrq-trigger文件的功能
    Windows下bat命令
    转——802.11协议
    转 ——eclipse下进行Python开发 环境配置
    U盘装centos7系统过程
    django框架介绍
    2-事件之间关系(概率论与数理统计学记笔记)
    1-基本概念(概率论与数理统计学习笔记)
    舆情正负面判断

  • 原文地址:https://www.cnblogs.com/John-Lyn/p/3848178.html
Copyright © 2011-2022 走看看