IDEA Mybatis动态SQL语句使用

1.公用映射类

UserMapper

	/**
     * 根据参数条件查询User
     * @param user
     * @return
     */
    User getUserByParameter(User user);

	/**
     * 修改一条User记录
     * @param user
     */
    void update(User user);

	/**
     * 根据ID集合获取相对应User记录
     * @param idList
     * @return
     */
    List<User> getUserByCollection(List<Integer> idList);

2.if运用

	<select id="getUserByParameter" resultType="User">
        select * from t_user where 1 = 1
            <if test="username != null">
                and username = #{username}
            </if>
            <if test="password != null">
                and password = #{password}
            </if>
    </select>

3.where运用

	<!--where动态条件会当条件满足时会自动去除第一个and/or-->
	<select id="getUserByParameter" resultType="User">
        select * from t_user
        <where>
            <if test="username != null">
                and username = #{username}
            </if>
            <if test="password != null">
                and password = #{password}
            </if>
        </where>
    </select>

4.set运用

	<!--SET动态条件会自动去除最后一个参数的","-->
	<update id="update">
        update t_user
          <set>
              <if test="username != null">username = #{username},</if>
              <if test="password != null">password = #{password},</if>
          </set>
        where id = #{id}
    </update>

5.trim运用

前缀Where运用

	<!--
        trim
        prefix自定义前缀为WHERE,
        prefixOverrides前缀覆盖,即去除第一个前缀与where功能相同
    -->
    <select id="getUserByParameter" resultType="User">
        select * from t_user
        <trim prefix="where" prefixOverrides="and | or">
            <if test="username != null">
                and username = #{username}
            </if>
            <if test="password != null">
                and password = #{password}
            </if>
        </trim>
    </select>

前缀Set运用

	<!--
        trim
        prefix自定义前缀为SET,
        suffixOverrides后缀覆盖,即去除最后一个",",与SET功能相同
    -->
	<update id="update">
        update t_user
          <trim prefix="set" suffixOverrides=",">
              <if test="username != null">username = #{username},</if>
              <if test="password != null">password = #{password},</if>
          </trim>
        where id = #{id}
    </update>

6.foreach运用

①UserMapper映射类添加

	/**
     * 根据ID集合获取相对应User记录
     * @param idList
     * @return
     */
    List<User> getUserByCollection(@Param("idList") List<Integer> idList);

②UserMapper.xml配置文件添加,该条件主要用于IN条件语句中

	<!--
        collection采集数据,来自于集合或数组
        index当前键
        item当前获取值
        separator分隔符
    -->
	<select id="getUserByCollection" resultType="User">
        select * from t_user where id in
        <foreach collection="idList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

③测试

	@Test
    public void test06() {
        List<Integer> integerList = new ArrayList<Integer>();
        integerList.add(2);
        integerList.add(5);
        integerList.add(11);
        List<User> list = userMapper.getUserByCollection(integerList);
        for (User user : list) {
            System.out.println(user);
        }
    }

⑤结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ww空ww

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

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

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

打赏作者

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

抵扣说明:

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

余额充值