Mybatis映射文件SQL讲解



Mybatis映射文件SQL讲解
1、最简单的SQL语句
  <!-- id的值必须与dao层的方法名相同才能实现dao层调用该条sql。resultType 返回类型是一个实体类,也就是查询出的表的数据赋值给对应的表的实体类。因为没有向SQL中传入参数所            以不用parameterType="Integer"(传入类型)-->
< select id = "SELECT_ALL" resultType = "对应实体类的路径" >
          select * from 表名
  </ select >
2、带传入参数的SQL
      <!-- 条件查询数据量 传入的参数类型parameterType="String" 为String类型 ,参数用#{参数名}代替 -->
     < select id = "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} 表示传入的第一个参数,依次类推-->
  < select id = "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; =表示<=
      < select id = "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)
   < select id = "get_Select" parameterType = "map" resultType = "对应的实体类路径" >
            SELECT * FROM (SELECT h.* ,ROWNUM RN FROM 表名 h where CPH LIKE CONCAT(CONCAT('%',#{参数1}),'%')) 
      < if test = "判断条件,判断的参数是同map中取的key值,或者其他类型的参数值" >
WHERE   RN &gt; = #{参数2} and RN &lt; =#{参数3}
      </ if >
      </ select >
6、mybatis创建表
map为传入的参数,第一个key是表名,第二个key是list类型里面存的是表的字段名字
     <update id= "CreateTable" parameterType= "map" >
          create table ${tableName} (
          <foreach collection= "createTable" item= "item" index= "index" separator= "," >
               ${item} VARCHAR2(500)
          </foreach>
          )
     </update>

特别说明:   1、${}的方式来调用参数,用#{}无法获取参数值,原因现在还没有搞明白。
2、collection="createTable"中的createTable是map中的key,对应的value是字段值的list集合。
3、separator=","是在每个元素之间添加逗号

发布了42 篇原创文章 · 获赞 32 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/m0_37027631/article/details/70258577
今日推荐