@Override public RH doInConnection(Connection connection) throws SQLException, DataAccessException { return crud.create(connection, values, keyConsumer); } });
@Override public Object doInConnection(Connection connection) throws SQLException, DataAccessException { crud.createOrUpdate(connection, value); return null; } });
@Override public Object apply(Connection connection) throws SQLException { delegate.delete(connection, key); return null; } });
objectCrud.delete(connection, Arrays.asList(1l, 2l)); assertNull(objectCrud.read(connection, 1l)); objectCrud.create(connection, object); assertEquals(object, objectCrud.read(connection, 1l)); objectCrud.update(connection, object); objectCrud.delete(connection, 1l); assertNull(objectCrud.read(connection, 1l)); objectCrud.create(connection, Arrays.asList(new OnlyKey(1), new OnlyKey(2))); try { objectCrud.createOrUpdate(connection, object); objectCrud.createOrUpdate(connection, Arrays.asList(new OnlyKey(1), new OnlyKey(2))); } catch (UnsupportedOperationException e) {
@Test public void testBatchUpsertOnDb() throws SQLException { Connection connection = DbHelper.getDbConnection(DbHelper.TargetDB.POSTGRESQL); if (connection == null) { System.err.println("Db Postgresql not available"); return; } System.out.println("connection = " + connection.getMetaData().getDatabaseMajorVersion() + "." + connection.getMetaData().getDatabaseMinorVersion()); if (connection.getMetaData().getDatabaseMajorVersion() != 9 || connection.getMetaData().getDatabaseMinorVersion() < 5) { System.err.println("Db Postgresql 9.5 not available"); return; } try { Crud<DbObject, Long> objectCrud = JdbcMapperFactory.newInstance().<DbObject, Long>crud(DbObject.class, Long.class).table(connection, "TEST_DB_OBJECT"); DbObject object1 = DbObject.newInstance(); DbObject object2 = DbObject.newInstance(); objectCrud.create(connection, object1); object1.setName("BatchUpdate"); object2.setName("BatchUpdate"); objectCrud.createOrUpdate(connection, Arrays.<DbObject>asList(object1, object2)); ResultSet resultSet = connection.createStatement().executeQuery("SELECT count(*) FROM TEST_DB_OBJECT WHERE name = 'BatchUpdate'"); assertTrue(resultSet.next()); assertEquals(2, resultSet.getInt(1)); assertEquals(object1, objectCrud.read(connection, object1.getId())); assertEquals(object2, objectCrud.read(connection, object2.getId())); } finally { connection.close(); } }
@Test public void testUUID() throws SQLException { Connection connection = DbHelper.getDbConnection(DbHelper.TargetDB.POSTGRESQL); if (connection == null) { System.err.println("Db POSTGRESQL not available"); return; } try { Crud<MyEntity, UUID> objectCrud = JdbcMapperFactory .newInstance() .addKeys("uid") .<MyEntity, UUID>crud(MyEntity.class, UUID.class) .table(connection, "TEST_UUID"); final MyEntity object = new MyEntity(); object.setId(1); object.setUid(UUID.randomUUID()); object.setName("n1"); objectCrud.create(connection, object); assertEquals(object, objectCrud.read(connection, object.getUid())); object.setName("Updated Email"); objectCrud.update(connection, object); assertEquals(object, objectCrud.read(connection, object.getUid())); } finally { connection.close(); } }
@Override public Object apply(Connection connection) throws SQLException { delegate.read(connection, keys, consumer); return null; } });
@Test public void testUpsert() throws SQLException { Connection connection = DbHelper.getDbConnection(DbHelper.TargetDB.POSTGRESQL); if (connection == null) { System.err.println("Db MySQL not available"); return; } if (connection.getMetaData().getDatabaseMajorVersion() != 9 || connection.getMetaData().getDatabaseMinorVersion() < 5) { System.err.println("Db Postgresql 9.5 not available"); return; } try { Crud<DbObject, Long> objectCrud = JdbcMapperFactory.newInstance().<DbObject, Long>crud(DbObject.class, Long.class).table(connection, "TEST_DB_OBJECT"); final DbObject object = DbObject.newInstance(); objectCrud.createOrUpdate(connection, object); assertEquals(object, objectCrud.read(connection, object.getId())); object.setEmail("Updated Email"); objectCrud.createOrUpdate(connection, object); assertEquals(object, objectCrud.read(connection, object.getId())); } finally { connection.close(); } }
@Override public Object apply(Connection connection) throws SQLException { delegate.update(connection, value); return null; } });
@Override public <P> SelectQuery<T, P> where(String whereClause, Type paramClass) { Crud<T, K> crud = delegate.get(); if (crud != null) { return crud.where(whereClause, paramClass); } else { return new LazySelectQuery<P>(whereClause, paramClass); } }
verify(crud).create(connection, values); verifyCloseCommitAndReset(crud, connection); verify(crud).create(connection, value); verifyCloseCommitAndReset(crud, connection); verify(crud).create(connection, values, consumer); verifyCloseCommitAndReset(crud, connection); verify(crud).create(connection, value, consumer); verifyCloseCommitAndReset(crud, connection); verify(crud).read(connection, value); verifyCloseCommitAndReset(crud, connection); verify(crud).read(connection, values, consumer); verifyCloseCommitAndReset(crud, connection); verify(crud).update(connection, value); verifyCloseCommitAndReset(crud, connection); verify(crud).update(connection, values); verifyCloseCommitAndReset(crud, connection); verify(crud).delete(connection, value); verifyCloseCommitAndReset(crud, connection); verify(crud).delete(connection, values); verifyCloseCommitAndReset(crud, connection);
@Test public void testBatchUpsertOnDb() throws SQLException { Connection connection = DbHelper.getDbConnection(DbHelper.TargetDB.MYSQL); if (connection == null) { System.err.println("Db MySQL not available"); return; } try { Crud<DbObject, Long> objectCrud = JdbcMapperFactory.newInstance().<DbObject, Long>crud(DbObject.class, Long.class).table(connection, "TEST_DB_OBJECT"); DbObject object1 = DbObject.newInstance(); DbObject object2 = DbObject.newInstance(); objectCrud.create(connection, object1); object1.setName("BatchUpdate"); object2.setName("BatchUpdate"); objectCrud.createOrUpdate(connection, Arrays.<DbObject>asList(object1, object2)); ResultSet resultSet = connection.createStatement().executeQuery("SELECT count(*) FROM TEST_DB_OBJECT WHERE name = 'BatchUpdate'"); assertTrue(resultSet.next()); assertEquals(2, resultSet.getInt(1)); assertEquals(object1, objectCrud.read(connection, object1.getId())); assertEquals(object2, objectCrud.read(connection, object2.getId())); } finally { connection.close(); } }
@Override public RH doInConnection(Connection connection) throws SQLException, DataAccessException { return crud.read(connection, keys, consumer); } });
@Test public void testUpsert() throws SQLException { Connection connection = DbHelper.getDbConnection(DbHelper.TargetDB.MYSQL); if (connection == null) { System.err.println("Db MySQL not available"); return; } try { Crud<DbObject, Long> objectCrud = JdbcMapperFactory.newInstance().<DbObject, Long>crud(DbObject.class, Long.class).table(connection, "TEST_DB_OBJECT"); final DbObject object = DbObject.newInstance(); objectCrud.createOrUpdate(connection, object); assertEquals(object, objectCrud.read(connection, object.getId())); object.setEmail("Updated Email"); objectCrud.createOrUpdate(connection, object); assertEquals(object, objectCrud.read(connection, object.getId())); } finally { connection.close(); } }
@Override public Object doInConnection(Connection connection) throws SQLException, DataAccessException { crud.update(connection, values); return null; } });
@Override public <P> SelectQuery<T, P> where(String whereClause, Type paramClass) { Crud<T, K> crud = delegate.get(); if (crud != null) { return crud.where(whereClause, paramClass); } else { return new LazySelectQuery<P>(whereClause, paramClass); } }
objectCrud.create(connection, object, new CheckedConsumer<Long>() { Long key; @Override assertEquals(object, objectCrud.read(connection, key)); objectCrud.update(connection, object); assertEquals(object, objectCrud.read(connection, key)); objectCrud.delete(connection, key); assertNull(objectCrud.read(connection, key)); objectCrud.create(connection, DbObject.newInstance()); objectCrud.create(connection, values, new CheckedConsumer<Long>() { @Override public void accept(Long aLong) throws Exception { assertCollectionEquals(values, objectCrud.read(connection, keys, new ListCollector<DbObject>()).getList()); objectCrud.update(connection, values); assertCollectionEquals(values, objectCrud.read(connection, keys, new ListCollector<DbObject>()).getList()); objectCrud.delete(connection, keys); assertCollectionEquals(Collections.<DbObject>emptyList(), objectCrud.read(connection, keys, new ListCollector<DbObject>()).getList());