我想在表中插入一个数组值来执行此任务我必须创建动态插入查询。如何执行它?

问题描述 投票:1回答:1

我想在表中插入一个数组值来执行此任务我必须创建动态插入查询。如何执行它?

表中的列:

ExcelNumber, ExcelName, UserName, UserNum, Column5, Column6, Column7, Column8, Column9, Column10, Column11,Column12,..........

数组前4列的数据是固定的,它包含ExcelNumber,ExcelName,UserName,UserNum,它与表的前4列相同。 (数组名称为:arrayToBeInsert)。

数组包含任意数量的行和任意数量的列。

提前致谢。

例:

[[101, EmployeeRecord101, Super@12, 214, ...........], 

[101, EmployeeRecord101, Super@12, 214,  ...........], 

[101, EmployeeRecord101, Super@12, 214,  ...........], 

.

.

.
.
.]

码:

try{
    template.execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            for(int i=0;i<arrayToBeInsert[0].length;i++){
                String insertQuery ="INSERT INTO upload_temp (ExcelNumber, ExcelName, UserName, UserNum,";
                .
                .
                .
                .
            }
            return valueToBeReturn;/*HibernateCallback return*/
        }
    });
}catch(Exception e){
    e.printStackTrace();
}
java sql hibernate
1个回答
0
投票
template.execute(new HibernateCallback() {
    public Object doInHibernate(Session session) throws HibernateException, SQLException {
        String insertQuery ="INSERT INTO upload_temp (ExcelNumber, ExcelName, UserName, UserNum,";
        String columnsDeclaration = "";

        for(int i=5;i<=arrayToBeInsert[0].length;i++) {

            String col="Column"+i;
            columnsDeclaration += col;

            if(i <= (arrayToBeInsert[0].length-1)){
                columnsDeclaration += ",";
            }
        }
        insertQuery = insertQuery.concat(columnsDeclaration+") VALUES (");
        String valueDeclaration = "";
        for(int i=0;i<arrayToBeInsert.length;i++) {
            for(int j=0;j<arrayToBeInsert[i].length;j++) {
                String val=arrayToBeInsert[i][j];

                valueDeclaration += "?";
                if(j < (arrayToBeInsert[i].length-1)){
                    valueDeclaration += ",";
                }
            }
            insertQuery = insertQuery.concat(valueDeclaration+");");
            insertQuery=insertQuery.substring(0, insertQuery.indexOf(";")+1);

            query=session.createSQLQuery(insertQuery);

            for(int j=0;j<arrayToBeInsert[i].length;j++) {
                query.setParameter(j, arrayToBeInsert[i][j]);
            }
            valueToBeReturn=query.executeUpdate();
        }
        return valueToBeReturn;/*HibernateCallback return*/
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.