mybatis中的动态sql语句

  1. <if是判断条件的>,
    语法<if test=“判断java对象属性值”> 部分sql语句 </if>
  <select id="selectByIf" resultType="com.bjpowernode.domain.Student">
        select id,name, email,age from student
        where
        <if test="name != null and name !='' ">
            name=#{name}
        </if>
        <if test="age > 0">
            or age > #{age}
        </if>
    </select>

2)<where> 用来包含多个 <if>,当多个if有一个成立时,<where>会自动增加一个where关键字,并去掉if中多余的add,or等.

 -->
    <select id="selectByWhere" resultType="com.bjpowernode.domain.Student">
        select id,name, email,age from student
        <where>
            <if test="name != null and name != ''">
                name=#{name}
            </if>
            <if test="age > 0 ">
                or age>#{age}
            </if>
        </where>
    </select>

3)<foreach> 循环中Java中的数组,list集合的,主要用在sql的in语句中.

学生id是10001,10002,10003的三个学生

select * from student where id in(10001,10002,10003)
 public List<Student> selectByForeach(List<Integer> idList);
 ist<Integer> list = new ArrayList<>();
 list.add(10001);
 list.add(10002);
 list.add(10003);
 dao.selectByForeach(list)        
<foreach collection="" item="" open="" close="">
</foreach>

collection: 表示接口中的参数类型,如果是数组使用Array,List集合使用list
item:自定义的,表示数组和集合成员的变量
open:循环开始的字符
close:循环结束的字符
separator:集合成员之间的分隔符

  <select id="selectByForeach" resultType="com.bjpowernode.domain.Student">
        select * from student where  id in
        <foreach collection="list" item="myid" open="(" close=")" separator=",">
            #{myid}
        </foreach>
    </select>

4)sql代码片段,就是复用一些语句

1.先定义<sql id=“自定义名称唯一”> sql语句,表名,字段等
2.在使用,<include refid = “id的值”>

   <!--定义sql代码片段-->
    <sql id="selectOne">
        select * from student
    </sql>
    <select id="selectByForeach" resultType="com.bjpowernode.domain.Student">
        <include refid="selectOne"></include> where id in
        <foreach collection="list" item="myid" open="(" close=")" separator=",">
            #{myid}
        </foreach>
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值