/** * Create a INSERT ... ON DUPLICATE KEY UPDATE clause * * @param entity table to insert to * @param clause clause * @return insert clause */ public SQLInsertClause insertOnDuplicateKeyUpdate(RelationalPath<?> entity, String clause) { SQLInsertClause insert = insert(entity); insert.addFlag(Position.END, " on duplicate key update " + clause); return insert; }
/** * Create a INSERT IGNORE INTO clause * * @param entity table to insert to * @return insert clause */ public SQLInsertClause insertIgnore(RelationalPath<?> entity) { SQLInsertClause insert = insert(entity); insert.addFlag(Position.START_OVERRIDE, "insert ignore into "); return insert; }
/** * Create a INSERT ... ON DUPLICATE KEY UPDATE clause * * @param entity table to insert to * @param clauses clauses * @return insert clause */ public SQLInsertClause insertOnDuplicateKeyUpdate(RelationalPath<?> entity, Expression<?>... clauses) { SQLInsertClause insert = insert(entity); StringBuilder flag = new StringBuilder(" on duplicate key update "); for (int i = 0; i < clauses.length; i++) { flag.append(i > 0 ? ", " : "").append("{" + i + "}"); } insert.addFlag(Position.END, ExpressionUtils.template(String.class, flag.toString(), clauses)); return insert; }
/** * Create a INSERT ... ON DUPLICATE KEY UPDATE clause * * @param entity table to insert to * @param clause clause * @return insert clause */ public SQLInsertClause insertOnDuplicateKeyUpdate(RelationalPath<?> entity, Expression<?> clause) { SQLInsertClause insert = insert(entity); insert.addFlag(Position.END, ExpressionUtils.template(String.class, " on duplicate key update {0}", clause)); return insert; }
@Test public void bulk() { QEmployee emp1 = new QEmployee("emp1"); SQLInsertClause insert = new SQLInsertClause(null, SQLTemplates.DEFAULT, emp1); insert.set(emp1.id, 1); insert.addBatch(); insert.set(emp1.id, 2); insert.addBatch(); insert.addFlag(QueryFlag.Position.END, " on duplicate key ignore"); insert.setBatchToBulk(true); assertEquals("insert into EMPLOYEE (ID)\n" + "values (?), (?) on duplicate key ignore", insert.getSQL().get(0).getSQL()); }
@Test @IncludeIn(MYSQL) @SkipForQuoted public void insert_with_special_options() { SQLInsertClause clause = insert(survey) .columns(survey.id, survey.name) .values(3, "Hello"); clause.addFlag(Position.START_OVERRIDE, "insert ignore into "); assertEquals("insert ignore into SURVEY (ID, NAME) values (?, ?)", clause.toString()); assertEquals(1, clause.execute()); }