Mybatis if标签 where标签 set标签的简单用法

Mybatis这个框架是一个持久层的框架,这个框架让我觉得好用的地方就是动态SQL,就是SQL中的的一些关键字一些字符可以通过标签动态的删除,例如在你书写修改sql语句的时候,可能只修改的部分字段,如果字段多的情况下就会有好几种情况,这样就会重复的书写SQL语句,会很繁琐,所以这个动态的SQL可以减少开发人员的工作量.这里写SQL语句只是举例,为了更能理解标签的用法

<!--
    if标签 test属性书写的条件 类似于java中if语句 如果符合条件就加上if标签中的 sql语句的片段
    set标签 这里不难发现 在SQL语句的dpmIntro字段后面 是多了一个逗号的 set标签会自动的帮你把最后一个逗号去掉
    where标签 where标签的功能在这里没有用到 如果在多条件的查询中
             条件字段中间是要加上and的  where标签会自动的帮你去掉第一个and
    同样的这里的标签 根据业务需求在增删改查的SQL语句中都能使用 这里只是举例
    -->
    <update id="updateDpm" parameterType="queryVo">
        UPDATE t_dpm
        <set>
            <if test="dpm.dpmName != null and dpm.dpmName !=''">
                dpmName = #{dpm.dpmName},
            </if>
            <if test="dpm.dpmIntro != null and dpm.dpmIntro !=''">
                dpmIntro = #{dpm.dpmIntro},
            </if>
        </set>
        <where>
            dpmId = #{dpm.dpmId}
        </where>
    </update>

由于上面where标签没有体现出来用法,这里就在写一个用到where标签的mybatisSQL

<!--
    where标签  如果在多条件的查询中 条件字段中间是要加上and的  where标签会自动的帮你去掉第一个and
    -->
    <select id="findUserByNameAndSex" parameterType="cn.hd.param.QueryVo" resultType="cn.hd.pojo.User">
                  SELECT * FROM t_user
                  <where>
                  <if test="user.name != null and user.name != ''">
                      AND name LIKE "%"#{user.name}"%"
                  </if>
                  <if test="user.sex != null and user.sex != ''">
                      AND sex=#{user.sex}
                  </if>
                  </where>
    </select>

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设有一个 User 表,其中有 id、name、age 三个字段,现在需要更新多个用户的信息,可以使用 MyBatis 的 foreach 标签set 标签来实现。 首先,需要定义一个 User 实体类: ``` public class User { private int id; private String name; private int age; // getter 和 setter 略 } ``` 然后,编写 MyBatis 的 Mapper 文件,其中的 update 语句如下: ``` <update id="updateUsers"> <foreach collection="users" item="user" separator=";"> update User <set> <if test="user.name != null">name=#{user.name},</if> <if test="user.age != null">age=#{user.age},</if> </set> where id=#{user.id} </foreach> </update> ``` 这里使用了 foreach 标签来遍历多个用户,其中的 collection 属性指定了要遍历的集合,item 属性指定了集合中的元素变量名,separator 属性指定了每个元素之间的分隔符。 在 foreach 标签中,使用了 set 标签来设置更新的字段,其中的 if 标签用于判断字段是否为 null,如果不为 null,则将该字段添加到更新语句中。 最后,在 where 子句中使用了 id 字段来定位要更新的用户。 在 Java 代码中,可以通过创建一个包含多个 User 对象的 List 来调用该 Mapper 中的 updateUsers 方法,示例代码如下: ``` List<User> userList = new ArrayList<>(); User user1 = new User(); user1.setId(1); user1.setName("Tom"); user1.setAge(20); userList.add(user1); User user2 = new User(); user2.setId(2); user2.setName("Jerry"); user2.setAge(25); userList.add(user2); userMapper.updateUsers(userList); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值