mysql insert syntax with multiple rows

173 views
Skip to first unread message

Pierre N

unread,
Aug 12, 2015, 11:02:23 AM8/12/15
to Querydsl
Does querydsl support multiple rows insert in one MySQL statement  ?

insert into table(name) values ('row1'),('row2');


Best,

timowest

unread,
Aug 12, 2015, 4:14:37 PM8/12/15
to Querydsl
For now these need to be specified via batches

SQLInsertClause clause = new SQLInsertClause(...);
clause.columns(...).values(...).addBatch();
clause.columns(...).values(...).addBatch();
clause.execute();

Timo

Pierre N

unread,
Aug 13, 2015, 2:39:32 AM8/13/15
to Querydsl
it's not the same, your suggestion will do multiple batched insert query, while the one I suggest is a single query, doing multiple insert at a time. It's a mysql specific feature, it's really faster than batched insert.

        QAlert t_alert = QAlert.alert;
       
try(Connection con = ds.getConnection()){
           
SQLInsertClause clause = new SQLInsertClause(con, conf, t_alert);
            clause
.columns(t_alert.city).values("city1").addBatch();
            clause
.columns(t_alert.city).values("city2").addBatch();
            clause
.execute();
       
}catch(Exception ex){
       
}


Generated queries : 

insert into `alert` (`city`) values ('city1');
insert into `alert` (`city`) values ('city2');
Reply all
Reply to author
Forward
0 new messages