Mybatis映射文件SQL讲解

来源:互联网 发布:如何减腹部的赘肉 知乎 编辑:程序博客网 时间:2024/06/06 01:19


Mybatis映射文件SQL讲解
1、最简单的SQL语句
  <!-- id的值必须与dao层的方法名相同才能实现dao层调用该条sql。resultType 返回类型是一个实体类,也就是查询出的表的数据赋值给对应的表的实体类。因为没有向SQL中传入参数所            以不用parameterType="Integer"(传入类型)-->
<selectid="SELECT_ALL"resultType="对应实体类的路径">
          select * from 表名
 </select>
2、带传入参数的SQL
      <!-- 条件查询数据量 传入的参数类型parameterType="String" 为String类型 ,参数用#{参数名}代替 -->
    <selectid="getCON"parameterType="String"  resultType="Integer">
         SELECT NVL(COUNT(*),0) FROM 表名  WHERE 字段名 LIKE CONCAT(CONCAT('%',#{字段对应的参数名}),'%')
   </select>
对应的dao层的方法也是需要带参数的

int  getCON(int 参数名)
  
     如果查询的不是数量的SQL而是查询表中的数据,那么resultType="对应的实体类路径"

dao层的方法则是List<实体类名> getCon(String 参数名)  参数类型视情况而定,不一定是String类型

3、同种类型对应多个参数的情况

      <!--  传入的单数类型是Integer类型的一个集合#{0} 表示传入的第一个参数,依次类推-->
 <selectid="selPage"parameterType="Integer"resultType="对应实体类的路径">
      SELECT * FROM (SELECTh.* ,ROWNUM RN FROM 表名 h) WHERE RN&gt;= #{0} and #{1}&gt;= RN
  </select>

dao层方法
public List<实体类名>  selPage(int 参数1,int 参数2);//参数1和2的名字叫什么没有关系,只要类型正确就行mybatis.xml中会用#{0}表示第一个参数值,#{1}表示第二个,依次类推。

4、不同类型,多个参数
<!-- 将参数装到map中,在SQL中取key就等与传入的value值,参数的名字一定要与实现方法中map对象中赋予的key相同-->
拓展:&gt;=代表>=因为在mybatis中>号是特殊字符所以需要进行转义,同样&lt;=表示<=
     <selectid="get_Select"parameterType="map"resultType="对应的实体类路径">
            SELECT * FROM (SELECT h.* ,ROWNUM RN FROM 表名 h where CPH LIKE CONCAT(CONCAT('%',#{参数1}),'%'))  WHERE   RN&gt;= #{参数2} and RN&lt;=#{参数3}
     </select>

dao层方法
    public  List<实体类名>  get_Select(Map<String,Object> map);//实现方法中对map对象进行赋值

5、mybatis中的sql判断(SQL语句同4)
   <selectid="get_Select"parameterType="map"resultType="对应的实体类路径">
            SELECT * FROM (SELECT h.* ,ROWNUM RN FROM 表名 h where CPH LIKE CONCAT(CONCAT('%',#{参数1}),'%')) 
     <iftest="判断条件,判断的参数是同map中取的key值,或者其他类型的参数值">
WHERE   RN&gt;= #{参数2} and RN&lt;=#{参数3}
     </if>
     </select>
0 0
原创粉丝点击