Mybatis映射文件SQL讲解

本文介绍了MyBatis映射文件中的SQL配置方法,包括简单查询、带参数查询、多参数处理、使用Map传递参数及SQL动态生成等高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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>
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=","是在每个元素之间添加逗号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪头的彩虹糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值