MyBatis教程:Foreach标签生成动态Sql
如何使用foreach标签生成动态Sql,主要包括以下3种场景:
- foreach实现集合中
- 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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。