動態SQL之foreach


 

1.1. foreach標簽

sql傳遞數組或Listmybatis使用foreach解析,如下:

 

根據多個id查詢用戶信息

查詢sql

SELECT * FROM user WHERE id IN (1,10,24)

 

1.1.1. 改造QueryVo

如下圖在pojo中定義list屬性ids存儲多個用戶id,並添加getter/setter方法

圖片


1.1.1. Mapper.xml文件

UserMapper.xml添加sql,如下:

<!-- 根據ids查詢用戶 -->

<select id="queryUserByIds" parameterType="queryVo" resultType="user">

SELECT * FROM `user`

<where>

<!-- foreach標簽,進行遍歷 -->

<!-- collection:遍歷的集合,這里是QueryVo的ids屬性 -->

<!-- item:遍歷的項目,可以隨便寫,,但是和后面的#{}里面要一致 -->

<!-- open:在前面添加的sql片段 -->

<!-- close:在結尾處添加的sql片段 -->

<!-- separator:指定遍歷的元素之間使用的分隔符 -->

<foreach collection="ids" item="item" open="id IN (" close=")"

separator=",">

#{item}

</foreach>

</where>

</select>
----------------------------------------------------

測試方法如下圖:

@Test

public void testQueryUserByIds() {

// mybatis和spring整合,整合之后,交給spring管理

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 創建Mapper接口的動態代理對象,整合之后,交給spring管理

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

 

// 使用userMapper執行根據條件查詢用戶

QueryVo queryVo = new QueryVo();

List<Integer> ids = new ArrayList<>();

ids.add(1);

ids.add(10);

ids.add(24);

queryVo.setIds(ids);

 

List<User> list = userMapper.queryUserByIds(queryVo);

 

for (User u : list) {

System.out.println(u);

}

 

// mybatis和spring整合,整合之后,交給spring管理

sqlSession.close();

 

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM