Code前端首页关于Code前端联系我们

MyBatis教程:Foreach标签生成动态Sql

terry 2年前 (2023-09-25) 阅读数 48 #后端开发

如何使用foreach标签生成动态Sql,主要包括以下3种场景:

  1. foreach实现集合中
  2. foreach实现批量插入

1。 foreach实现集合

假设有这样一个需求:根据传入的用户ID集合查询所有符合条件的用户。这时候我们就需要用到SQL中的IN,比如(1, 1001)中的ID。

首先我们在SysUserMapper接口中添加如下方法:

/**
 * 根据用户id集合查询用户
 *
 * @param idList
 * @return
 */
List<SysUser> selectByIdList(List<Long> idList);

然后在对应的SysUserMapper.xml中添加如下代码:

<select id="selectByIdList" resultType="com.zwwhnly.mybatisaction.model.SysUser">
    SELECT id,
    user_name,
    user_password,
    user_email,
    create_time
    FROM sys_user
    WHERE id IN
    <foreach collection="list" open="(" close=")" separator=","
             item="id" index="i">
        #{id}
    </foreach>
</select>

最后在SysUser类Mapper中添加如下测试方法:TestUserMapper:测试代码,测试通过,输出日志如下:

DEBUG [main] - ==> 准备工作: SELECT ID, user_name, user_password, user_email, create_time FROM sys_user WHERE id IN ( ? , ? )

DEBUG [main] - = => 参数:1(长)、1001(长)

TRACE [main] - 参数:test@mybatis.tk(String), 12345678(String), 1(Long), 1(Long)

DEBUG [main] - 准备: SELECT ID, user_name, user_password, user_email, create_time FROM sys_user WHERE id = ?

DEBUG [main] - ==> 参数:

TRACE [main] -

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门