DataSource
-enabled Factory
constructors instead, e.g.
Factory.Factory(DataSource, SQLDialect)
or
Factory.Factory(DataSource, SQLDialect, Settings)
@Deprecated public final class FactoryProxy extends Object implements FactoryOperations
Factory
.
The FactoryProxy
operates as a thread-safe proxy for jOOQ's
Factory
objects. Instead of wrapping JDBC Connection
objects,
the FactoryProxy
wraps a transaction-aware DataSource
and creates a new Factory
with a new Connection
every time you use any of the operations from FactoryOperations
Refer to the jOOQ manual to see possible operation modes for jOOQ with
Spring. Note that this implementation of a FactoryProxy
might be
re-designed in jOOQ 3.0. Please consider this functionality as being
EXPERIMENTAL
Constructor and Description |
---|
FactoryProxy()
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
void |
attach(Attachable... attachables)
Deprecated.
Attach this
Factory to some attachables |
void |
attach(Collection<Attachable> attachables)
Deprecated.
Attach this
Factory to some attachables |
Batch |
batch(Collection<? extends Query> queries)
Deprecated.
Execute a set of queries in batch mode (without bind values).
|
Batch |
batch(Query... queries)
Deprecated.
Execute a set of queries in batch mode (without bind values).
|
BatchBindStep |
batch(Query query)
Deprecated.
Execute a set of queries in batch mode (with bind values).
|
Batch |
batchStore(Collection<? extends UpdatableRecord<?>> records)
Deprecated.
Execute a set of
INSERT and UPDATE queries in
batch mode (with bind values). |
Batch |
batchStore(UpdatableRecord<?>... records)
Deprecated.
Execute a set of
INSERT and UPDATE queries in
batch mode (with bind values). |
void |
commit()
Deprecated.
Convenience method to access
Connection.commit()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
<T extends Number> |
currval(Sequence<T> sequence)
Deprecated.
Convenience method to fetch the CURRVAL for a sequence directly from this
Factory 's underlying JDBC Connection |
<R extends Record> |
delete(Table<R> table)
Deprecated.
Create a new DSL delete statement.
|
<R extends Record> |
deleteQuery(Table<R> table)
Deprecated.
Create a new
DeleteQuery |
int |
execute(String sql)
Deprecated.
Execute a query holding plain SQL.
|
int |
execute(String sql,
Object... bindings)
Deprecated.
Execute a new query holding plain SQL.
|
int |
execute(String sql,
QueryPart... parts)
Deprecated.
Execute a new query holding plain SQL.
|
<R extends UpdatableRecord<R>> |
executeDelete(R record)
Deprecated.
Delete a record from a table
DELETE FROM [table] WHERE [record is supplied record] |
<R extends TableRecord<R>,T> |
executeDelete(R record,
Condition condition)
Deprecated.
Delete a record from a table
DELETE FROM [table] WHERE [condition] |
<R extends TableRecord<R>> |
executeDelete(Table<R> table)
Deprecated.
|
<R extends TableRecord<R>,T> |
executeDelete(Table<R> table,
Condition condition)
Deprecated.
|
<R extends TableRecord<R>> |
executeDeleteOne(Table<R> table)
Deprecated.
|
<R extends TableRecord<R>,T> |
executeDeleteOne(Table<R> table,
Condition condition)
Deprecated.
|
<R extends TableRecord<R>> |
executeInsert(R record)
Deprecated.
Insert one record
This executes something like the following statement:
INSERT INTO [table] ... |
<R extends TableRecord<R>> |
executeInsert(Table<R> table,
R record)
Deprecated.
|
<R extends UpdatableRecord<R>> |
executeUpdate(R record)
Deprecated.
Update a table
UPDATE [table] SET [modified values in record] WHERE [record is supplied record] |
<R extends TableRecord<R>,T> |
executeUpdate(R record,
Condition condition)
Deprecated.
Update a table
UPDATE [table] SET [modified values in record] WHERE [condition] |
<R extends TableRecord<R>> |
executeUpdate(Table<R> table,
R record)
Deprecated.
|
<R extends TableRecord<R>,T> |
executeUpdate(Table<R> table,
R record,
Condition condition)
Deprecated.
|
<R extends TableRecord<R>> |
executeUpdateOne(Table<R> table,
R record)
Deprecated.
|
<R extends TableRecord<R>,T> |
executeUpdateOne(Table<R> table,
R record,
Condition condition)
Deprecated.
|
Result<Record> |
fetch(ResultSet rs)
Deprecated.
|
Result<Record> |
fetch(String sql)
Deprecated.
Execute a new query holding plain SQL.
|
Result<Record> |
fetch(String sql,
Object... bindings)
Deprecated.
Execute a new query holding plain SQL.
|
Result<Record> |
fetch(String sql,
QueryPart... parts)
Deprecated.
Execute a new query holding plain SQL.
|
<R extends Record> |
fetch(Table<R> table)
Deprecated.
Execute and return all records for
SELECT * FROM [table]
The result and its contained records are attached to this
Configuration by default. |
<R extends Record> |
fetch(Table<R> table,
Condition condition)
Deprecated.
Execute and return all records for
SELECT * FROM [table] WHERE [condition]
The result and its contained records are attached to this
Configuration by default. |
<R extends Record> |
fetchAny(Table<R> table)
Deprecated.
Execute and return zero or one record for
SELECT * FROM [table] LIMIT 1
The resulting record is attached to this Configuration by
default. |
Result<Record> |
fetchFromCSV(String string)
Deprecated.
Fetch all data from a CSV string.
|
Result<Record> |
fetchFromCSV(String string,
char delimiter)
Deprecated.
Fetch all data from a CSV string.
|
Cursor<Record> |
fetchLazy(ResultSet rs)
Deprecated.
|
Cursor<Record> |
fetchLazy(String sql)
Deprecated.
Execute a new query holding plain SQL and "lazily" return the generated
result.
|
Cursor<Record> |
fetchLazy(String sql,
Object... bindings)
Deprecated.
Execute a new query holding plain SQL and "lazily" return the generated
result.
|
Cursor<Record> |
fetchLazy(String sql,
QueryPart... parts)
Deprecated.
Execute a new query holding plain SQL and "lazily" return the generated
result.
|
List<Result<Record>> |
fetchMany(String sql)
Deprecated.
Execute a new query holding plain SQL, possibly returning several result
sets
Example (Sybase ASE):
String sql = "sp_help 'my_table'";
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. |
List<Result<Record>> |
fetchMany(String sql,
Object... bindings)
Deprecated.
Execute a new query holding plain SQL, possibly returning several result
sets.
|
List<Result<Record>> |
fetchMany(String sql,
QueryPart... parts)
Deprecated.
Execute a new query holding plain SQL, possibly returning several result
sets.
|
Record |
fetchOne(String sql)
Deprecated.
Execute a new query holding plain SQL.
|
Record |
fetchOne(String sql,
Object... bindings)
Deprecated.
Execute a new query holding plain SQL.
|
Record |
fetchOne(String sql,
QueryPart... parts)
Deprecated.
Execute a new query holding plain SQL.
|
<R extends Record> |
fetchOne(Table<R> table)
Deprecated.
Execute and return zero or one record for
SELECT * FROM [table]
The resulting record is attached to this Configuration by
default. |
<R extends Record> |
fetchOne(Table<R> table,
Condition condition)
Deprecated.
Execute and return zero or one record for
SELECT * FROM [table] WHERE [condition]
The resulting record is attached to this Configuration by
default. |
boolean |
getAutoCommit()
Deprecated.
Convenience method to access
Connection.getAutoCommit()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
Connection |
getConnection()
Deprecated.
Retrieve the configured connection
If you configured a data source for this
Configuration (see
Configuration.setDataSource(DataSource) ), then this may initialise a new
connection. |
Map<String,Object> |
getData()
Deprecated.
Get all custom data from this
Configuration
This is custom data that was previously set to the configuration using
Configuration.setData(String, Object) . |
Object |
getData(String key)
Deprecated.
Get some custom data from this
Configuration
This is custom data that was previously set to the configuration using
Configuration.setData(String, Object) . |
DataSource |
getDataSource()
Deprecated.
Retrieve the configured data source
|
SQLDialect |
getDialect()
Deprecated.
Retrieve the configured dialect
|
int |
getHoldability()
Deprecated.
Convenience method to access
Connection.getHoldability()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
SchemaMapping |
getSchemaMapping()
Deprecated.
|
Settings |
getSettings()
Deprecated.
Retrieve the runtime configuration settings
|
int |
getTransactionIsolation()
Deprecated.
Convenience method to access
Connection.getTransactionIsolation()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
<R extends Record> |
insertInto(Table<R> into)
Deprecated.
Create a new DSL insert statement.
|
<R extends Record> |
insertInto(Table<R> into,
Collection<? extends Field<?>> fields)
Deprecated.
Create a new DSL insert statement.
|
<R extends Record> |
insertInto(Table<R> into,
Field<?>... fields)
Deprecated.
Create a new DSL insert statement.
|
<R extends Record> |
insertInto(Table<R> into,
Select<?> select)
Deprecated.
|
<R extends Record> |
insertQuery(Table<R> into)
Deprecated.
Create a new
InsertQuery |
BigInteger |
lastID()
Deprecated.
Retrieve the last inserted ID.
|
<R extends TableRecord<R>> |
loadInto(Table<R> table)
Deprecated.
Create a new
Loader object to load data from a CSV or XML
source |
<R extends Record> |
mergeInto(Table<R> table)
Deprecated.
Create a new DSL SQL standard MERGE statement.
|
<R extends Record> |
mergeInto(Table<R> table,
Collection<? extends Field<?>> fields)
Deprecated.
Create a new DSL merge statement (H2-specific syntax)
|
<R extends Record> |
mergeInto(Table<R> table,
Field<?>... fields)
Deprecated.
Create a new DSL merge statement (H2-specific syntax)
This statement is available from DSL syntax only.
|
<R extends TableRecord<R>> |
newRecord(Table<R> table)
Deprecated.
Create a new
Record that can be inserted into the corresponding
table. |
<R extends TableRecord<R>> |
newRecord(Table<R> table,
Object source)
Deprecated.
Create a new pre-filled
Record that can be inserted into the
corresponding table. |
<R extends UDTRecord<R>> |
newRecord(UDT<R> type)
Deprecated.
Create a new
UDTRecord . |
<T extends Number> |
nextval(Sequence<T> sequence)
Deprecated.
Convenience method to fetch the NEXTVAL for a sequence directly from this
Factory 's underlying JDBC Connection |
Query |
query(String sql)
Deprecated.
Create a new query holding plain SQL.
|
Query |
query(String sql,
Object... bindings)
Deprecated.
Create a new query holding plain SQL.
|
Query |
query(String sql,
QueryPart... parts)
Deprecated.
Create a new query holding plain SQL.
|
void |
releaseSavepoint(Savepoint savepoint)
Deprecated.
Convenience method to access
Connection.releaseSavepoint(Savepoint)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
String |
render(QueryPart part)
Deprecated.
Render a QueryPart in the context of this factory
This is the same as calling
renderContext().render(part) |
String |
renderInlined(QueryPart part)
Deprecated.
Render a QueryPart in the context of this factory, inlining all bind
variables.
|
String |
renderNamedParams(QueryPart part)
Deprecated.
Render a QueryPart in the context of this factory, rendering bind
variables as named parameters.
|
ResultQuery<Record> |
resultQuery(String sql)
Deprecated.
Create a new query holding plain SQL.
|
ResultQuery<Record> |
resultQuery(String sql,
Object... bindings)
Deprecated.
Create a new query holding plain SQL.
|
ResultQuery<Record> |
resultQuery(String sql,
QueryPart... parts)
Deprecated.
Create a new query holding plain SQL.
|
void |
rollback()
Deprecated.
Convenience method to access
Connection.rollback()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
void |
rollback(Savepoint savepoint)
Deprecated.
Convenience method to access
Connection.rollback(Savepoint)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
SelectSelectStep |
select(Collection<? extends Field<?>> fields)
Deprecated.
Create a new DSL select statement.
|
SelectSelectStep |
select(Field<?>... fields)
Deprecated.
Create a new DSL select statement.
|
SelectSelectStep |
selectCount()
Deprecated.
Create a new DSL select statement for
COUNT(*)
Example:
Factory create = new Factory();
create.selectCount()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
|
SelectSelectStep |
selectDistinct(Collection<? extends Field<?>> fields)
Deprecated.
Create a new DSL select statement.
|
SelectSelectStep |
selectDistinct(Field<?>... fields)
Deprecated.
Create a new DSL select statement.
|
<R extends Record> |
selectFrom(Table<R> table)
Deprecated.
Create a new DSL select statement
Example:
SELECT * FROM [table] WHERE [conditions] ORDER BY [ordering] LIMIT [limit clause]
|
SelectSelectStep |
selectOne()
Deprecated.
Create a new DSL select statement for constant
1 literal
Example:
Factory create = new Factory();
create.selectOne()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
|
SelectQuery |
selectQuery()
Deprecated.
Create a new
SelectQuery |
<R extends Record> |
selectQuery(TableLike<R> table)
Deprecated.
Create a new
SelectQuery |
SelectSelectStep |
selectZero()
Deprecated.
Create a new DSL select statement for constant
0 literal
Example:
Factory create = new Factory();
create.selectZero()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
|
void |
setAutoCommit(boolean autoCommit)
Deprecated.
Convenience method to access
Connection.setAutoCommit(boolean)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
void |
setConnection(Connection connection)
Deprecated.
Set the configured connection
If you provide a JDBC connection to a jOOQ Factory, jOOQ will use that
connection for creating statements, but it will never call any of these
methods:
Connection.commit()
Connection.rollback()
Connection.close()
Use this constructor if you want to handle transactions directly on the
connection. |
Object |
setData(String key,
Object value)
Deprecated.
Set some custom data to this
Configuration
Use custom data if you want to pass data to your custom QueryPart
or ExecuteListener objects to be made available at render, bind,
execution, fetch time. |
void |
setDataSource(DataSource dataSource)
Deprecated.
Set the configured data source
If you provide a JDBC data source to a jOOQ Factory, jOOQ will use that
data source for initialising connections, and creating statements.
|
void |
setDialect(SQLDialect dialect)
Deprecated.
|
void |
setHoldability(int holdability)
Deprecated.
Convenience method to access
Connection.setHoldability(int)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
Savepoint |
setSavepoint()
Deprecated.
Convenience method to access
Connection.setSavepoint()
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
Savepoint |
setSavepoint(String name)
Deprecated.
Convenience method to access
Connection.setSavepoint(String)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
void |
setSettings(Settings settings)
Deprecated.
|
void |
setTransactionIsolation(int level)
Deprecated.
Convenience method to access
Connection.setTransactionIsolation(int)
Use this method only if you control the JDBC Connection wrapped
by this Configuration , and if that connection manages the current
transaction. |
<R extends Record> |
truncate(Table<R> table)
Deprecated.
Create a new DSL truncate statement.
|
<R extends Record> |
update(Table<R> table)
Deprecated.
Create a new DSL update statement.
|
<R extends Record> |
updateQuery(Table<R> table)
Deprecated.
Create a new
UpdateQuery |
int |
use(Schema schema)
Deprecated.
Use a schema as the default schema of the underlying connection.
|
int |
use(String schema)
Deprecated.
Use a schema as the default schema of the underlying connection.
|
public final void setDialect(SQLDialect dialect)
public final void setSettings(Settings settings)
public final void setDataSource(DataSource dataSource)
Configuration
If you provide a JDBC data source to a jOOQ Factory, jOOQ will use that data source for initialising connections, and creating statements.
Use data sources if you want to run distributed transactions, such as
javax.transaction.UserTransaction
. If you provide jOOQ
factories with a data source, jOOQ will close()
all connections after query execution in order to return the
connection to the connection pool. If you do not use distributed
transactions, this will produce driver-specific behaviour at the end of
query execution at close()
invocation (e.g. a transaction
rollback). Use Configuration.setConnection(Connection)
instead, to control the
connection's lifecycle.
setDataSource
in interface Configuration
public final DataSource getDataSource()
Configuration
getDataSource
in interface Configuration
public final SQLDialect getDialect()
Configuration
getDialect
in interface Configuration
@Deprecated public final SchemaMapping getSchemaMapping()
Configuration
getSchemaMapping
in interface Configuration
public final Settings getSettings()
Configuration
getSettings
in interface Configuration
public final Connection getConnection()
Configuration
If you configured a data source for this Configuration
(see
Configuration.setDataSource(DataSource)
), then this may initialise a new
connection.
getConnection
in interface Configuration
public final void setConnection(Connection connection)
Configuration
If you provide a JDBC connection to a jOOQ Factory, jOOQ will use that connection for creating statements, but it will never call any of these methods:
Use this constructor if you want to handle transactions directly on the connection.setConnection
in interface Configuration
public final Map<String,Object> getData()
Configuration
Configuration
This is custom data that was previously set to the configuration using
Configuration.setData(String, Object)
. Use custom data if you want to pass
data to your custom QueryPart
or ExecuteListener
objects
to be made available at render, bind, execution, fetch time.
See ExecuteListener
for more details.
getData
in interface Configuration
null
ExecuteListener
public final Object getData(String key)
Configuration
Configuration
This is custom data that was previously set to the configuration using
Configuration.setData(String, Object)
. Use custom data if you want to pass
data to your custom QueryPart
or ExecuteListener
objects
to be made available at render, bind, execution, fetch time.
See ExecuteListener
for more details.
getData
in interface Configuration
key
- A key to identify the custom datanull
if no such data is contained
in this Configuration
ExecuteListener
public final Object setData(String key, Object value)
Configuration
Configuration
Use custom data if you want to pass data to your custom QueryPart
or ExecuteListener
objects to be made available at render, bind,
execution, fetch time.
Be sure that your custom data implements Serializable
if you want
to serialise this Configuration
or objects referencing this
Configuration
, e.g. your Record
types.
See ExecuteListener
for more details.
setData
in interface Configuration
key
- A key to identify the custom datavalue
- The custom data or null
to unset the custom
datanull
if no data
was previously set for the given keyExecuteListener
public final <R extends TableRecord<R>> LoaderOptionsStep<R> loadInto(Table<R> table)
FactoryOperations
Loader
object to load data from a CSV or XML
sourceloadInto
in interface FactoryOperations
public final String render(QueryPart part)
FactoryOperations
This is the same as calling renderContext().render(part)
render
in interface FactoryOperations
part
- The QueryPart
to be renderedpublic final String renderNamedParams(QueryPart part)
FactoryOperations
This is the same as calling
renderContext().namedParams(true).render(part)
renderNamedParams
in interface FactoryOperations
part
- The QueryPart
to be renderedpublic final String renderInlined(QueryPart part)
FactoryOperations
This is the same as calling
renderContext().inline(true).render(part)
renderInlined
in interface FactoryOperations
part
- The QueryPart
to be renderedpublic final void attach(Attachable... attachables)
FactoryOperations
Factory
to some attachablesattach
in interface FactoryOperations
public final void attach(Collection<Attachable> attachables)
FactoryOperations
Factory
to some attachablesattach
in interface FactoryOperations
public final Query query(String sql)
FactoryOperations
Example:
String sql = "SET SCHEMA 'abc'";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
query
in interface FactoryOperations
sql
- The SQLpublic final Query query(String sql, Object... bindings)
FactoryOperations
Example:
String sql = "SET SCHEMA 'abc'";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
query
in interface FactoryOperations
sql
- The SQLbindings
- The bindingspublic final Query query(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.query(String, Object...)
, the SQL passed to this method
should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
query("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will render this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
query
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final <R extends Record> SimpleSelectWhereStep<R> selectFrom(Table<R> table)
FactoryOperations
Example:
SELECT * FROM [table] WHERE [conditions] ORDER BY [ordering] LIMIT [limit clause]
selectFrom
in interface FactoryOperations
public final SelectSelectStep select(Field<?>... fields)
FactoryOperations
Example:
Factory create = new Factory();
create.select(field1, field2)
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2)
.execute();
select
in interface FactoryOperations
public final SelectSelectStep selectZero()
FactoryOperations
0
literal
Example:
Factory create = new Factory();
create.selectZero()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
selectZero
in interface FactoryOperations
Factory.zero()
public final SelectSelectStep selectOne()
FactoryOperations
1
literal
Example:
Factory create = new Factory();
create.selectOne()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
selectOne
in interface FactoryOperations
Factory.one()
public final SelectSelectStep selectCount()
FactoryOperations
COUNT(*)
Example:
Factory create = new Factory();
create.selectCount()
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
selectCount
in interface FactoryOperations
public final SelectSelectStep selectDistinct(Field<?>... fields)
FactoryOperations
Example:
Factory create = new Factory();
create.selectDistinct(field1, field2)
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
selectDistinct
in interface FactoryOperations
public final SelectSelectStep select(Collection<? extends Field<?>> fields)
FactoryOperations
Example:
Factory create = new Factory();
create.select(fields)
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
select
in interface FactoryOperations
public final SelectSelectStep selectDistinct(Collection<? extends Field<?>> fields)
FactoryOperations
Example:
Factory create = new Factory();
create.selectDistinct(fields)
.from(table1)
.join(table2).on(field1.equal(field2))
.where(field1.greaterThan(100))
.orderBy(field2);
selectDistinct
in interface FactoryOperations
public final SelectQuery selectQuery()
FactoryOperations
SelectQuery
selectQuery
in interface FactoryOperations
public final <R extends Record> SimpleSelectQuery<R> selectQuery(TableLike<R> table)
FactoryOperations
SelectQuery
selectQuery
in interface FactoryOperations
table
- The table to select data fromSelectQuery
public final <R extends Record> InsertQuery<R> insertQuery(Table<R> into)
FactoryOperations
InsertQuery
insertQuery
in interface FactoryOperations
into
- The table to insert data intoInsertQuery
public final <R extends Record> InsertSetStep<R> insertInto(Table<R> into)
FactoryOperations
UPDATE
statement's
SET a = b
syntax.
Example:
Factory create = new Factory();
create.insertInto(table)
.set(field1, value1)
.set(field2, value2)
.newRecord()
.set(field1, value3)
.set(field2, value4)
.onDuplicateKeyUpdate()
.set(field1, value1)
.set(field2, value2)
.execute();
insertInto
in interface FactoryOperations
public final <R extends Record> InsertValuesStep<R> insertInto(Table<R> into, Field<?>... fields)
FactoryOperations
Example:
Factory create = new Factory();
create.insertInto(table, field1, field2)
.values(value1, value2)
.values(value3, value4)
.onDuplicateKeyUpdate()
.set(field1, value1)
.set(field2, value2)
.execute();
insertInto
in interface FactoryOperations
public final <R extends Record> InsertValuesStep<R> insertInto(Table<R> into, Collection<? extends Field<?>> fields)
FactoryOperations
Example:
Factory create = new Factory();
create.insertInto(table, field1, field2)
.values(value1, value2)
.values(value3, value4)
.onDuplicateKeyUpdate()
.set(field1, value1)
.set(field2, value2)
.execute();
insertInto
in interface FactoryOperations
@Deprecated public final <R extends Record> Insert<R> insertInto(Table<R> into, Select<?> select)
FactoryOperations
Example:
Factory create = new Factory();
create.insertInto(table, create.select(1))
.execute();
insertInto
in interface FactoryOperations
public final <R extends Record> UpdateQuery<R> updateQuery(Table<R> table)
FactoryOperations
UpdateQuery
updateQuery
in interface FactoryOperations
table
- The table to update data intoUpdateQuery
public final <R extends Record> UpdateSetStep<R> update(Table<R> table)
FactoryOperations
Example:
Factory create = new Factory();
create.update(table)
.set(field1, value1)
.set(field2, value2)
.where(field1.greaterThan(100))
.execute();
Note that some databases support table expressions more complex than
simple table references. In CUBRID and MySQL, for instance, you can write
create.update(t1.join(t2).on(t1.id.eq(t2.id)))
.set(t1.value, value1)
.set(t2.value, value2)
.where(t1.id.eq(10))
.execute();
update
in interface FactoryOperations
public final <R extends Record> MergeUsingStep<R> mergeInto(Table<R> table)
FactoryOperations
This statement is available from DSL syntax only. It is known to be supported in some way by any of these dialects:
dialect | support type | documentation |
---|---|---|
DB2 | SQL:2008 standard and major enhancements | http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com. ibm.db2.udb.admin.doc/doc/r0010873.htm |
HSQLDB | SQL:2008 standard | http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#N129BA |
Oracle | SQL:2008 standard and minor enhancements | http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/ statements_9016.htm |
SQL Server | Similar to SQL:2008 standard with some major enhancements | http://msdn.microsoft.com/de-de/library/bb510625.aspx |
Sybase | Similar to SQL:2008 standard with some major enhancements | http://dcx.sybase.com/1100/en/dbreference_en11/merge-statement.html |
Example:
Factory create = new Factory();
create.mergeInto(table)
.using(select)
.on(condition)
.whenMatchedThenUpdate()
.set(field1, value1)
.set(field2, value2)
.whenNotMatchedThenInsert(field1, field2)
.values(value1, value2)
.execute();
Note: Using this method, you can also create an H2-specific MERGE
statement without field specification. See also
FactoryOperations.mergeInto(Table, Field...)
mergeInto
in interface FactoryOperations
public final <R extends Record> MergeKeyStep<R> mergeInto(Table<R> table, Field<?>... fields)
FactoryOperations
This statement is available from DSL syntax only. It is known to be supported in some way by any of these dialects:
H2 | H2 natively supports this special syntax | www.h2database.com/html/grammar.html#merge |
DB2, HSQLDB, Oracle, SQL Server, Sybase SQL Anywhere | These databases can simulate the H2-specific MERGE statement using a standard SQL MERGE statement, without restrictions | See FactoryOperations.mergeInto(Table) for the standard MERGE statement |
mergeInto
in interface FactoryOperations
public final <R extends Record> MergeKeyStep<R> mergeInto(Table<R> table, Collection<? extends Field<?>> fields)
FactoryOperations
mergeInto
in interface FactoryOperations
FactoryOperations.mergeInto(Table, Field...)
public final <R extends Record> DeleteQuery<R> deleteQuery(Table<R> table)
FactoryOperations
DeleteQuery
deleteQuery
in interface FactoryOperations
table
- The table to delete data fromDeleteQuery
public final <R extends Record> DeleteWhereStep<R> delete(Table<R> table)
FactoryOperations
Example:
Factory create = new Factory();
create.delete(table)
.where(field1.greaterThan(100))
.execute();
delete
in interface FactoryOperations
public final Batch batch(Query... queries)
FactoryOperations
This essentially runs the following logic:
Statement s = connection.createStatement();
for (Query query : queries) {
s.addBatch(query.getSQL(true));
}
s.execute();
batch
in interface FactoryOperations
Statement.executeBatch()
public final Batch batch(Collection<? extends Query> queries)
FactoryOperations
This essentially runs the following logic:
Statement s = connection.createStatement();
for (Query query : queries) {
s.addBatch(query.getSQL(true));
}
s.execute();
batch
in interface FactoryOperations
Statement.executeBatch()
public final BatchBindStep batch(Query query)
FactoryOperations
When running
create.batch(query)
.bind(valueA1, valueA2)
.bind(valueB1, valueB2)
.execute();
This essentially runs the following logic:
Statement s = connection.prepareStatement(query.getSQL(false));
for (Object[] bindValues : allBindValues) {
for (Object bindValue : bindValues) {
s.setXXX(bindValue);
}
s.addBatch();
}
s.execute();
Note: bind values will be inlined to a static batch query as in
FactoryOperations.batch(Query...)
, if you choose to execute queries with
Settings.getStatementType()
== StatementType.STATIC_STATEMENT
batch
in interface FactoryOperations
Statement.executeBatch()
public final Batch batchStore(UpdatableRecord<?>... records)
FactoryOperations
INSERT
and UPDATE
queries in
batch mode (with bind values).
This batch operation can be executed in two modes:
Settings.getStatementType()
== StatementType.PREPARED_STATEMENT
(the default)[number of distinct rendered SQL statements]
. In the worst
case, this corresponds to the number of total records.
The record type order is preserved in the way they are passed to this
method. This is an example of how statements will be ordered:
The above results in
// Let's assume, odd numbers result in INSERTs and even numbers in UPDATES
// Let's also assume a[n] are all of the same type, just as b[n], c[n]...
int[] result = create.batchStore(a1, a2, a3, b1, a4, c1, b3, a5)
.execute();
result.length == 8
and
the following 4 separate batch statements:
Settings.getStatementType()
== StatementType.STATIC_STATEMENT
batchStore
in interface FactoryOperations
Statement.executeBatch()
public final Batch batchStore(Collection<? extends UpdatableRecord<?>> records)
FactoryOperations
INSERT
and UPDATE
queries in
batch mode (with bind values).batchStore
in interface FactoryOperations
FactoryOperations.batchStore(UpdatableRecord...)
,
Statement.executeBatch()
public final <R extends Record> Truncate<R> truncate(Table<R> table)
FactoryOperations
Example:
Factory create = new Factory();
create.truncate(table)
.execute();
Most dialects implement the TRUNCATE
statement. If it is not
supported, it is simulated using an equivalent DELETE
statement. This is particularly true for these dialects:
Note, this statement is only supported in DSL mode. Immediate execution is omitted for future extensibility of this command.
truncate
in interface FactoryOperations
public final <R extends UDTRecord<R>> R newRecord(UDT<R> type)
FactoryOperations
UDTRecord
.
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
newRecord
in interface FactoryOperations
R
- The generic record typetype
- The UDT describing records of type <R>public final <R extends TableRecord<R>> R newRecord(Table<R> table)
FactoryOperations
Record
that can be inserted into the corresponding
table.
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
newRecord
in interface FactoryOperations
R
- The generic record typetable
- The table holding records of type <R>public final <R extends TableRecord<R>> R newRecord(Table<R> table, Object source)
FactoryOperations
Record
that can be inserted into the
corresponding table.
This performs roughly the inverse operation of Record.into(Class)
The resulting record will have its internal "changed" flags set to true
for all values. This means that UpdatableRecord.store()
will
perform an INSERT
statement. If you wish to store the record
using an UPDATE
statement, use
FactoryOperations.executeUpdate(UpdatableRecord)
instead.
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
newRecord
in interface FactoryOperations
R
- The generic record typetable
- The table holding records of type <R>source
- The source to be used to fill the new recordRecord.from(Object)
,
Record.into(Class)
public final Result<Record> fetch(ResultSet rs)
FactoryOperations
ResultSet
and transform it to a jOOQ
Result
. After fetching all data, the JDBC ResultSet will be
closed.
Use FactoryOperations.fetchLazy(ResultSet)
, to fetch one Record
at a
time, instead of load the entire ResultSet
into a jOOQ
Result
at once.
fetch
in interface FactoryOperations
rs
- The JDBC ResultSet to fetch data frompublic final Cursor<Record> fetchLazy(ResultSet rs)
FactoryOperations
ResultSet
and transform it to a jOOQ
Result
. After fetching all data, the JDBC ResultSet will be
closed.
Use FactoryOperations.fetch(ResultSet)
, to load the entire ResultSet
into a jOOQ Result
at once.
fetchLazy
in interface FactoryOperations
rs
- The JDBC ResultSet to fetch data frompublic final Result<Record> fetchFromCSV(String string)
FactoryOperations
This is the same as calling fetchFromCSV(string, ',')
and
the inverse of calling Result.formatCSV()
. The first row of the
CSV data is required to hold field name information. Subsequent rows may
contain data, which is interpreted as String
. Use the various
conversion methods to retrieve other data types from the
Result
:
Result.getValues(Field, Class)
Result.getValues(int, Class)
Result.getValues(String, Class)
Result.getValues(Field, Converter)
Result.getValues(int, Converter)
Result.getValues(String, Converter)
Missing values result in null
. Empty values result in empty
Strings
fetchFromCSV
in interface FactoryOperations
string
- The CSV stringFactoryOperations.fetchFromCSV(String, char)
public final Result<Record> fetchFromCSV(String string, char delimiter)
FactoryOperations
This is inverse of calling Result.formatCSV(char)
. The first row
of the CSV data is required to hold field name information. Subsequent
rows may contain data, which is interpreted as String
. Use the
various conversion methods to retrieve other data types from the
Result
:
Result.getValues(Field, Class)
Result.getValues(int, Class)
Result.getValues(String, Class)
Result.getValues(Field, Converter)
Result.getValues(int, Converter)
Result.getValues(String, Converter)
Missing values result in null
. Empty values result in empty
Strings
fetchFromCSV
in interface FactoryOperations
string
- The CSV stringdelimiter
- The delimiter to expect between recordsFactoryOperations.fetchFromCSV(String)
public final Result<Record> fetch(String sql)
FactoryOperations
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetch
in interface FactoryOperations
sql
- The SQLnull
, even if the database returns no
ResultSet
public final Result<Record> fetch(String sql, Object... bindings)
FactoryOperations
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetch
in interface FactoryOperations
sql
- The SQLbindings
- The bindingsnull
, even if the database returns no
ResultSet
public final Result<Record> fetch(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.fetch(String, Object...)
, the SQL passed to this method
should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
fetch("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will execute this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
fetch
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final Cursor<Record> fetchLazy(String sql)
FactoryOperations
The returned Cursor
holds a reference to the executed
PreparedStatement
and the associated ResultSet
. Data can
be fetched (or iterated over) lazily, fetching records from the
ResultSet
one by one.
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchLazy
in interface FactoryOperations
sql
- The SQLnull
, even if the database returns no
ResultSet
public final Cursor<Record> fetchLazy(String sql, Object... bindings)
FactoryOperations
The returned Cursor
holds a reference to the executed
PreparedStatement
and the associated ResultSet
. Data can
be fetched (or iterated over) lazily, fetching records from the
ResultSet
one by one.
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchLazy
in interface FactoryOperations
sql
- The SQLbindings
- The bindingsnull
, even if the database returns no
ResultSet
public final Cursor<Record> fetchLazy(String sql, QueryPart... parts)
FactoryOperations
The returned Cursor
holds a reference to the executed
PreparedStatement
and the associated ResultSet
. Data can
be fetched (or iterated over) lazily, fetching records from the
ResultSet
one by one.
Unlike FactoryOperations.fetchLazy(String, Object...)
, the SQL passed to this
method should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
fetchLazy("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will execute this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
fetchLazy
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final List<Result<Record>> fetchMany(String sql)
FactoryOperations
Example (Sybase ASE):
String sql = "sp_help 'my_table'";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchMany
in interface FactoryOperations
sql
- The SQLnull
, even if the database returns no
ResultSet
public final List<Result<Record>> fetchMany(String sql, Object... bindings)
FactoryOperations
Example (Sybase ASE):
String sql = "sp_help 'my_table'";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchMany
in interface FactoryOperations
sql
- The SQLbindings
- The bindingsnull
, even if the database returns no
ResultSet
public final List<Result<Record>> fetchMany(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.fetchMany(String, Object...)
, the SQL passed to this
method should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
fetchMany("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will execute this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
fetchMany
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final Record fetchOne(String sql)
FactoryOperations
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchOne
in interface FactoryOperations
sql
- The SQLnull
, even if the database returns no
ResultSet
public final Record fetchOne(String sql, Object... bindings)
FactoryOperations
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
fetchOne
in interface FactoryOperations
sql
- The SQLbindings
- The bindingsnull
if the database returned no recordspublic final Record fetchOne(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.fetchOne(String, Object...)
, the SQL passed to this
method should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will execute this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
fetchOne
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationsnull
if the database returned no recordspublic final int execute(String sql)
FactoryOperations
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
execute
in interface FactoryOperations
sql
- The SQLpublic final int execute(String sql, Object... bindings)
FactoryOperations
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
execute
in interface FactoryOperations
sql
- The SQLbindings
- The bindingspublic final int execute(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.execute(String, Object...)
, the SQL passed to this method
should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
execute("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will execute this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
execute
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final ResultQuery<Record> resultQuery(String sql)
FactoryOperations
Use this method, when you want to take advantage of the many ways to
fetch results in jOOQ, using ResultQuery
. Some examples:
ResultQuery.fetchLazy() |
Open a cursor and fetch records one by one |
ResultQuery.fetchInto(Class) |
Fetch records into a custom POJO (optionally annotated with JPA annotations) |
ResultQuery.fetchInto(RecordHandler) |
Fetch records into a custom callback (similar to Spring's RowMapper) |
ResultQuery.fetchLater() |
Fetch records of a long-running query asynchronously |
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
resultQuery
in interface FactoryOperations
sql
- The SQLpublic final ResultQuery<Record> resultQuery(String sql, Object... bindings)
FactoryOperations
Use this method, when you want to take advantage of the many ways to
fetch results in jOOQ, using ResultQuery
. Some examples:
ResultQuery.fetchLazy() |
Open a cursor and fetch records one by one |
ResultQuery.fetchInto(Class) |
Fetch records into a custom POJO (optionally annotated with JPA annotations) |
ResultQuery.fetchInto(RecordHandler) |
Fetch records into a custom callback (similar to Spring's RowMapper) |
ResultQuery.fetchLater() |
Fetch records of a long-running query asynchronously |
Example (Postgres):
Example
(SQLite):
String sql = "FETCH ALL IN \"
String sql = "pragma table_info('my_table')";
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
resultQuery
in interface FactoryOperations
sql
- The SQLbindings
- The bindingspublic final ResultQuery<Record> resultQuery(String sql, QueryPart... parts)
FactoryOperations
Unlike FactoryOperations.resultQuery(String, Object...)
, the SQL passed to this
method should not contain any bind variables. Instead, you can pass
QueryPart
objects to the method which will be rendered at indexed
locations of your SQL string as such:
// The following query
resultQuery("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
// Will render this SQL on an Oracle database with RenderNameStyle.QUOTED:
select ?, 'test' from "DUAL"
NOTE: When inserting plain SQL into jOOQ objects, you must
guarantee syntax integrity. You may also create the possibility of
malicious SQL injection. Be sure to properly use bind variables and/or
escape literals when concatenated into SQL clauses! One way to escape
literals is to use Factory.name(String...)
and similar methods
resultQuery
in interface FactoryOperations
sql
- The SQL clause, containing {numbered placeholders} where query
parts can be injectedparts
- The QueryPart
objects that are rendered at the
{numbered placeholder} locationspublic final BigInteger lastID()
FactoryOperations
Note, there are some restrictions to the following dialects:
SQLDialect.DB2
doesn't support thisSQLDialect.ORACLE
doesn't support thisSQLDialect.POSTGRES
doesn't support thisSQLDialect.SQLITE
supports this, but its support is poorly
documented.lastID
in interface FactoryOperations
null
in some
dialects, if no such number is available.public final <T extends Number> T nextval(Sequence<T> sequence)
FactoryOperations
Factory
's underlying JDBC Connection
nextval
in interface FactoryOperations
public final <T extends Number> T currval(Sequence<T> sequence)
FactoryOperations
Factory
's underlying JDBC Connection
currval
in interface FactoryOperations
public final int use(Schema schema)
FactoryOperations
This has two effects.
USE [schema]
statement is executed on those RDBMS
that support thisSchema
is used as the default schema resulting
in omitting that schema in rendered SQL.
The USE [schema]
statement translates to the various
dialects as follows:
Dialect | Command |
---|---|
DB2 | SET SCHEMA [schema] |
Derby: | SET SCHEMA [schema] |
H2: | SET SCHEMA [schema] |
HSQLDB: | SET SCHEMA [schema] |
MySQL: | USE [schema] |
Oracle: | ALTER SESSION SET CURRENT_SCHEMA = [schema] |
Postgres: | SET SEARCH_PATH = [schema] |
Sybase: | USE [schema] |
use
in interface FactoryOperations
public final int use(String schema)
FactoryOperations
use
in interface FactoryOperations
FactoryOperations.use(Schema)
public final <R extends Record> Result<R> fetch(Table<R> table)
FactoryOperations
SELECT * FROM [table]
The result and its contained records are attached to this
Configuration
by default. Use Settings.isAttachRecords()
to override this behaviour.
fetch
in interface FactoryOperations
public final <R extends Record> Result<R> fetch(Table<R> table, Condition condition)
FactoryOperations
SELECT * FROM [table] WHERE [condition]
The result and its contained records are attached to this
Configuration
by default. Use Settings.isAttachRecords()
to override this behaviour.
fetch
in interface FactoryOperations
public final <R extends Record> R fetchOne(Table<R> table)
FactoryOperations
SELECT * FROM [table]
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
fetchOne
in interface FactoryOperations
null
if no record was returnedpublic final <R extends Record> R fetchOne(Table<R> table, Condition condition)
FactoryOperations
SELECT * FROM [table] WHERE [condition]
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
fetchOne
in interface FactoryOperations
null
if no record was returnedpublic final <R extends Record> R fetchAny(Table<R> table)
FactoryOperations
SELECT * FROM [table] LIMIT 1
The resulting record is attached to this Configuration
by
default. Use Settings.isAttachRecords()
to override this
behaviour.
fetchAny
in interface FactoryOperations
null
if no record was returned@Deprecated public final <R extends TableRecord<R>> int executeInsert(Table<R> table, R record)
FactoryOperations
INSERT INTO [table] ... VALUES [record]
executeInsert
in interface FactoryOperations
public final <R extends TableRecord<R>> int executeInsert(R record)
FactoryOperations
This executes something like the following statement:
INSERT INTO [table] ... VALUES [record]
Unlike UpdatableRecord.store()
, this does not change any of the
argument record
's internal "changed" flags, such that a
subsequent call to UpdatableRecord.store()
might lead to another
INSERT
statement being executed.
executeInsert
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>> int executeUpdate(Table<R> table, R record)
FactoryOperations
UPDATE [table] SET [modified values in record]
executeUpdate
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>,T> int executeUpdate(Table<R> table, R record, Condition condition)
FactoryOperations
UPDATE [table] SET [modified values in record] WHERE [condition]
executeUpdate
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>> int executeUpdateOne(Table<R> table, R record)
FactoryOperations
UPDATE [table] SET [modified values in record]
executeUpdateOne
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>,T> int executeUpdateOne(Table<R> table, R record, Condition condition)
FactoryOperations
UPDATE [table] SET [modified values in record] WHERE [condition]
executeUpdateOne
in interface FactoryOperations
public final <R extends UpdatableRecord<R>> int executeUpdate(R record)
FactoryOperations
UPDATE [table] SET [modified values in record] WHERE [record is supplied record]
executeUpdate
in interface FactoryOperations
public final <R extends TableRecord<R>,T> int executeUpdate(R record, Condition condition)
FactoryOperations
UPDATE [table] SET [modified values in record] WHERE [condition]
executeUpdate
in interface FactoryOperations
public final <R extends UpdatableRecord<R>> int executeDelete(R record)
FactoryOperations
DELETE FROM [table] WHERE [record is supplied record]
executeDelete
in interface FactoryOperations
public final <R extends TableRecord<R>,T> int executeDelete(R record, Condition condition)
FactoryOperations
DELETE FROM [table] WHERE [condition]
executeDelete
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>> int executeDelete(Table<R> table)
FactoryOperations
DELETE FROM [table]
executeDelete
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>,T> int executeDelete(Table<R> table, Condition condition)
FactoryOperations
DELETE FROM [table] WHERE [condition]
executeDelete
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>> int executeDeleteOne(Table<R> table)
FactoryOperations
DELETE FROM [table]
executeDeleteOne
in interface FactoryOperations
@Deprecated public final <R extends TableRecord<R>,T> int executeDeleteOne(Table<R> table, Condition condition)
FactoryOperations
DELETE FROM [table] WHERE [condition]
executeDeleteOne
in interface FactoryOperations
public final int getTransactionIsolation()
FactoryOperations
Connection.getTransactionIsolation()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
getTransactionIsolation
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void setTransactionIsolation(int level)
FactoryOperations
Connection.setTransactionIsolation(int)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
setTransactionIsolation
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final int getHoldability()
FactoryOperations
Connection.getHoldability()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
getHoldability
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void setHoldability(int holdability)
FactoryOperations
Connection.setHoldability(int)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
setHoldability
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final boolean getAutoCommit()
FactoryOperations
Connection.getAutoCommit()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
getAutoCommit
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void setAutoCommit(boolean autoCommit)
FactoryOperations
Connection.setAutoCommit(boolean)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
setAutoCommit
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void releaseSavepoint(Savepoint savepoint)
FactoryOperations
Connection.releaseSavepoint(Savepoint)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
releaseSavepoint
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final Savepoint setSavepoint(String name)
FactoryOperations
Connection.setSavepoint(String)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
setSavepoint
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final Savepoint setSavepoint()
FactoryOperations
Connection.setSavepoint()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
setSavepoint
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void rollback(Savepoint savepoint)
FactoryOperations
Connection.rollback(Savepoint)
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
rollback
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void rollback()
FactoryOperations
Connection.rollback()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
rollback
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
public final void commit()
FactoryOperations
Connection.commit()
Use this method only if you control the JDBC Connection
wrapped
by this Configuration
, and if that connection manages the current
transaction. If your transaction is operated on a distributed
javax.transaction.UserTransaction
, for instance, this method
will not work.
commit
in interface FactoryOperations
Configuration.setConnection(Connection)
,
Configuration.setDataSource(DataSource)
Copyright © 2013. All Rights Reserved.