java的sql语句操作,能否在循环里面执行?

yoblue 发布于 2015/11/30 12:01
阅读 484
收藏 0

      如题,有很多时候,我们会遇到一些需要批量查询的操作,比如说,根据用户的姓名,来查找他的id。如果用户是用excel表格上传的方式,一次性上传上千上万条的数据需要获取,那么我们这时候需要如何执行根据姓名查找用户相关信息的操作呢?如果是在for循环里面进行一条一条的查询,如下:

     for(int i=0;i<excellist.size();i++){

           query=session.createquery(sql查询语句);

     }

     但是这样的话,数据库肯定很蛋疼,所以这种情况下,是否先把所有用户数据都取出来到一个list里面,然后再进行比对如下:

     list=session.createquery("select * from user").list();

     for(int i=0;i<excellist.size();i++){

        if(excellist.get(i).getname==list.get(i).getname){

            ...

       }

      }

这种方式貌似也不明智,我想到的方法是,是否能在数据库里面创造一个函数,这个函数有一个names的数组形参,在程序调用这个数据库函数并把nameslist传进去,然后返回想要的批量数据。这几种方式如何?是否有更好的方法呢??



加载中
0
土豆NO-1
maradona
maradona
IN有数量限制的,oracle是999
yoblue
yoblue
用in 如果数据太多,会不会奔溃掉?
0
飞到天空的猪
飞到天空的猪

看你什么数据库了,mysql的话,可以支持一条insert插入多条记录。

飞到天空的猪
飞到天空的猪
@yoblue 那个最好分批flush一下
yoblue
yoblue
看来只能自己尝试拼接字符超过上千的sql调用操作会不会有问题了。。
返回顶部
顶部