学习笔记之Mybatis的动态sql

今天学习了动态sql三个表现

1.if判断

<if test="_parameter!=null and _parameter!=0">
      and id=#{_parameter}<!--当传入数据只有一个时,要用_parameter代替参数,才可以使用 -->

   </if>

test的参数是限定条件,前面加and是为了拼接语句

还有where语句

<where></where><!-- 会去掉通过的第一个if语句的and,这样就会完成拼接-->

2.sql语句的拼接

假如有一段语句要重复使用,可以将重复的内容取出来然后通过标识符被其他部分所共用

<!-- 定义sql片段 -->
<!-- id为sql片段唯一标识符 -->
<sql id="sqlfragment">
   <if test="_parameter!=null and _parameter!=0">
      and id=#{_parameter}<!--当传入数据只有一个时,要用_parameter代替参数,才可以使用 -->
   </if>

   </sql>

再需要调用它的语句中这样写

 <select id="findUserById" parameterType="int" resultType="User">
      select * from mb_test1
      <where><!--如果refid指定的id不在本mapper文件中,则前面要加namespace -->
         <include refid="sqlfragment"></include>    这句则是调用段sql语句
      </where>

    </select>


3.foreach

加入需要完成多个id的限定查找,需要传入一个list值,这时候需要用foreach解决

 <!-- 通过传入一个集合,完成多个id的限定查找 -->

<collection>表示对象标识符,也就是list对象的名称
item是每个遍历生成的对象
open是开始遍历时要拼接的串
close是结束时要拼接串
separator是拼接两个遍历对象的字符串

实现一个  select * from mb_test1 where id=1 or id=3 or id=5

    <select id="findListById" parameterType="com.mb.po.UserQueryVo" resultType="com.mb.po.UserCustom">
        select * from mb_test1 where 
        <foreach collection="ids" item="every_id" open="" close= ""   separator="OR" >
           id=#{every_id}
           </foreach> 
  </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值