mybatis中mapper的if,where,set等标签的⽤法if,基本都是⽤来判断值是否为空
<if test="userCustom != null">
<if test="userCustom.username != null and userCustom.username != ''"><!-- 注意and不能⼤写 -->
and username = #{userCustom.username}
</if>
<if test="userCustom.sex != null and userCustom.sex != ''">
and sex = #{userCustom.sex}
watch的复数</if>
</if>
where⽤来去掉多条件查询时,开头多余的and
select * from user
<where>
<!-- 引⽤Sql⽚段 -->
<include refid="query_user_where"></include>
<!-- 在这⾥还要引⽤其它的sql⽚段 -->
<!--
where 可以⾃动去掉条件中的第⼀个and
-->renegotiate
<!--    <if test="sex != null and sex != ''">
and sex = #{sex}
</if>
<if test="id != null">
and id = #{id}
</if> -->
</where>
</select>
set
set标记是mybatis提供的⼀个智能标记,我⼀般将其⽤在修改的sql中,例如以下情况:
    update user
    <set>
      <if test="name != null and name.length()>0">name = #{name},</if>
      <if test="gender != null and gender.length()>0">gender = #{gender},</if>
    </set>
wpf自定义控件
    where id = #{id}
  </update>
在上述的代码⽚段当中,假如说现在三个字段都有值得话,那么上⾯打印的SQL语句如下:
update user set name=‘xxx’ , gender=‘xx’ where id=‘x’
在上⾯标红的地⽅是没有逗号的,也就是说set标记已经⾃动帮助我们把最后⼀个逗号给去掉了
foreach ⽤来遍历数组或者集合
<foreach collection="ids" item="user_id" open="AND (" close=")" separator="or" >
mysql语句的执行顺序
每次遍历需要拼接的串
id= #{user_id}
</foreach>
</if>
需求:SELECT * FROM USER WHERE id=1 OR id=10 OR id=16
或者:SELECT * FROM USER WHERE id IN(1,10,16)
其中,collection:指定输⼊对象中集合属性,item: 每个遍历⽣成对象,open:开始遍历时拼接串,close: 结束遍历是拼接的
串,separator: 遍历的两个对象中需要拼接的串
<if test="ids != null">
<foreach collection="ids" item="user_id" open="and id IN(" close=")" separator=",">
id= #{user_id}
</foreach>
</if>
choose
有时候我们并不想应⽤所有的条件,⽽只是想从多个选项中选择⼀个。⽽使⽤if标签时,只要test中的表达式为 true,就会执⾏ if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,⽽ choose 是或(or)的关系。
choose标签是按顺序判断其内部when标签中的test条件出否成⽴,如果有⼀个成⽴,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执⾏ otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
例如下⾯例⼦,同样把所有可以限制的条件都写上,⽅⾯使⽤。choose会从上到下选择⼀个when标签的test为true的sql执⾏。安全考虑,我们使⽤where将choose包起来,放置关键字多于错误。
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">      SELECT *
FROM User u
<where>
<choose>
<when test="username !=null ">
u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
</when >
<when test="sex != null and sex != '' ">
AND u.sex = #{sex, jdbcType=INTEGER}
flung
</when >
xml发票怎么打开
<when test="birthday != null ">
AND u.birthday = #{birthday, jdbcType=DATE}
</when >
<otherwise>
</otherwise>
</choose>
</where>
</select>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。