使用java语言利用collection集合标签完成一对多表的查询功能
时间: 2024-05-02 12:21:35 浏览: 69
首先,我们需要创建两个实体类,一个是一的一方的实体类,另一个是多的一方的实体类。
一的一方实体类:
```java
public class OneEntity {
private Integer id;
private String name;
private List<ManyEntity> manyList;
//getters and setters
}
```
多的一方实体类:
```java
public class ManyEntity {
private Integer id;
private String name;
private Integer oneId;
//getters and setters
}
```
接下来,我们需要在一的一方实体类中添加一个集合属性,用来存储多的一方实体类的数据。
然后,我们需要编写一个DAO层的方法,使用mybatis进行查询操作,查询一的一方表的数据,并使用mybatis的一对多映射功能,将多的一方表的数据映射到一的一方表的集合属性中。
```java
public List<OneEntity> queryOneManyList() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
OneMapper oneMapper = sqlSession.getMapper(OneMapper.class);
List<OneEntity> oneList = oneMapper.queryAll();
for (OneEntity one : oneList) {
ManyMapper manyMapper = sqlSession.getMapper(ManyMapper.class);
List<ManyEntity> manyList = manyMapper.queryByOneId(one.getId());
one.setManyList(manyList);
}
sqlSession.close();
return oneList;
}
```
最后,在jsp页面中使用collection标签来展示一的一方表的数据和多的一方表的数据。
```jsp
<c:forEach var="one" items="${oneList}">
<tr>
<td>${one.id}</td>
<td>${one.name}</td>
<td>
<c:forEach var="many" items="${one.manyList}">
${many.name},
</c:forEach>
</td>
</tr>
</c:forEach>
```
阅读全文