java 用返回的list去查询数据库,返回list

2024-12-31 13:59:35
推荐回答(3个)
回答1:

分析你的逻辑应该如下:
1、查询表1中符合条件的信息,获取一个结果集合1;
2、基于结果集合1循环,检索表2,获取结果集合2。
如此,如果表1、表2间存在直接关联关系(即直接使用结果集合1中的部分信息作为表2查询的条件),那么完全可以在后台将两张表关联查询,这样避免了通过java进行循环,在大数量级情况下会严重占用内存。
如果表1,表2间没有直接的关联关系(即通过循环表1,判断其中条件后按照其它的特定对照值去查询表2),那么仍然建议使用后台表关联查询,及将表1查询的结果集按照不同的条件获取的值转换成对应的映射值后作为一个基准集合,然后将这个集合与表2关联查询即可。具体的sql语句,得根据你使用的数据库和具体场景去编写。

总之,此类情况,完全可以交由数据库搞定,如果使用你现在的逻辑(即查询表1,循环结果集1,然后查询表2,获取结果集2),虽然原则上没有错,但会增加很多内存开销,在大数据量级的情况下,非常容易出现内存溢出的异常,并不作为合理的编码方式。

回答2:

传入的参数不重要,问题是你逻辑怎么处理。
你传入list进去,如果里面用到的数据是list1里面的单一记录,那就跑循环,如果2个list之间有关联,直接join表跑效率会提高很多

回答3:

设置关联,用延迟hibernate的加载