jodd.db.orm.sqlgen
Class DbSqlBuilder

java.lang.Object
  extended by jodd.db.orm.sqlgen.TemplateData
      extended by jodd.db.orm.sqlgen.DbSqlBuilder
All Implemented Interfaces:
DbSqlGenerator

public class DbSqlBuilder
extends TemplateData
implements DbSqlGenerator

Nice SQL query generator that provides some automatic query generation.

Query is built by appending 'chunks' - parts of the query. These chunks may be very simple, as a simple string. However, the main reason of existence of this class are chunks that auto-generate part of the query based on provided domain object. They can be used to easily create some most common queries in an efficient way.

Although it is not necessary, use of DbId annotation boost the functionality of this query builder.

Some chunks deals with relations between tables, so they must be aware of foreign key names. Here the naming convention is used, and even users might have their own foreign key naming convention.

Furthermore, if all queries are generated using just sql builder, it is possible to use dialects for various database types.


Field Summary
protected static jodd.cache.Cache<java.lang.String,SqlChunk> cache
           
protected static int cacheThreshold
           
protected  SqlChunk firstChunk
           
protected  SqlChunk lastChunk
           
protected static jodd.db.orm.sqlgen.TemplateParser templateParser
           
protected  int totalChunks
           
 
Fields inherited from class jodd.db.orm.sqlgen.TemplateData
columnAliasType, columnCount, columnData, dbOrmManager, hintCount, hints, lastColumnDec, objectRefs, paramCount, parameters, tableRefs
 
Constructor Summary
DbSqlBuilder()
          Creates new SQL builder.
DbSqlBuilder(java.lang.String template)
           
 
Method Summary
 DbSqlBuilder _()
          Single space shortcut.
 DbSqlBuilder _(java.lang.String text)
          User-friendly append(String).
protected  DbSqlBuilder addChunk(SqlChunk chunk)
          Appends chunk to the list.
 DbSqlBuilder aliasColumnsAs(ColumnAliasType aliasesType)
          Specifies column alias type.
 DbSqlBuilder append(java.lang.String text)
          Parses provided text into the list of chunks and appends them to the list.
 DbSqlBuilder appendRaw(java.lang.String text)
          Simply adds text without parsing to the query.
protected static SqlChunk cloneAllChunks(SqlChunk chunk)
          Clones all chunks.
 DbSqlBuilder column(java.lang.String reference)
           
 DbSqlBuilder column(java.lang.String tableRef, java.lang.String columnRef)
           
 DbSqlBuilder columnsAll(java.lang.String tableRef)
           
 DbSqlBuilder columnsIds(java.lang.String tableRef)
           
 DbSqlBuilder colvalue(java.lang.Object value)
           
 DbSqlBuilder colvalue(java.lang.String name, java.lang.Object value)
           
 DbSqlBuilder colvalueRef(java.lang.String objectReference)
           
 java.lang.String generateQuery()
          Generates SQL query.
 java.util.Map<java.lang.String,ColumnData> getColumnData()
          Returns an optional map of table and column names, used by ResultSetMapper.
 java.lang.String[] getJoinHints()
          Returns join hints.
 java.util.Map<java.lang.String,ParameterValue> getQueryParameters()
          Returns a map of SQL parameters used by generated query.
 DbSqlBuilder insert(java.lang.Class entity, java.lang.Object values)
           
 DbSqlBuilder insert(java.lang.Object values)
           
 DbSqlBuilder insert(java.lang.String entityName, java.lang.Object values)
           
 DbSqlBuilder match(java.lang.String expression)
           
 DbSqlBuilder match(java.lang.String tableRef, java.lang.Object value)
          Creates condition part of the query only for existing columns.
 DbSqlBuilder match(java.lang.String tableRef, java.lang.String objectRef)
           
 DbSqlBuilder matchAll(java.lang.String tableRef, java.lang.Object value)
          Creates condition part of the query for all columns, including the null values.
 DbSqlBuilder matchAll(java.lang.String tableRef, java.lang.String objectRef)
           
 DbSqlBuilder matchIds(java.lang.String tableRef, java.lang.Object value)
          Creates condition part of the query for id columns
 DbSqlBuilder matchIds(java.lang.String tableRef, java.lang.String objectRef)
           
 DbOrmQuery query()
          Returns DbOrmQuery instance for more fluent interface.
 DbOrmQuery query(DbSession session)
           
 DbSqlBuilder ref(java.lang.String columnRef)
           
 DbSqlBuilder ref(java.lang.String tableRef, java.lang.String columnRef)
           
 DbSqlBuilder refId(java.lang.String tableRef)
           
 DbSqlBuilder reset()
          Resets the builder so it can be used again.
 DbSqlBuilder set(java.lang.String tableRef, java.lang.Object values)
           
 DbSqlBuilder setAll(java.lang.String tableRef, java.lang.Object values)
           
static void setCacheSize(int size)
          Sets new cache size.
static void setCacheThreshold(int ct)
          Sets the minimal number of sql chunks that query must contains so to be cached.
static DbSqlBuilder sql()
           
static DbSqlBuilder sql(java.lang.String template)
          Template constructor that uses cache.
 DbSqlBuilder table(java.lang.Object entity)
           
 DbSqlBuilder table(java.lang.Object entity, java.lang.String alias)
           
 DbSqlBuilder table(java.lang.String entityName)
           
 DbSqlBuilder table(java.lang.String entityName, java.lang.String alias)
           
 DbSqlBuilder use(java.lang.String name, java.lang.Object value)
          Defines object reference and an object.
 DbSqlBuilder value(java.lang.Object value)
           
 DbSqlBuilder value(java.lang.String name, java.lang.Object value)
           
 DbSqlBuilder valueRef(java.lang.String objectReference)
           
 
Methods inherited from class jodd.db.orm.sqlgen.TemplateData
addParameter, defineParameter, getColumnAliasType, getDbOrmManager, getNextParameterName, getObjectReference, getTableAlias, getTableDescriptor, lookupName, lookupObject, lookupTableRef, lookupType, registerColumnDataForColumnCode, registerColumnDataForTableRef, registerHint, registerTableReference, resetAll, resetOnPreInit, setObjectReference
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cache

protected static jodd.cache.Cache<java.lang.String,SqlChunk> cache

cacheThreshold

protected static int cacheThreshold

firstChunk

protected SqlChunk firstChunk

lastChunk

protected SqlChunk lastChunk

totalChunks

protected int totalChunks

templateParser

protected static final jodd.db.orm.sqlgen.TemplateParser templateParser
Constructor Detail

DbSqlBuilder

public DbSqlBuilder()
Creates new SQL builder.


DbSqlBuilder

public DbSqlBuilder(java.lang.String template)
Method Detail

sql

public static DbSqlBuilder sql()

sql

public static DbSqlBuilder sql(java.lang.String template)
Template constructor that uses cache.


reset

public DbSqlBuilder reset()
Resets the builder so it can be used again. Object references are not cleared!


setCacheThreshold

public static void setCacheThreshold(int ct)
Sets the minimal number of sql chunks that query must contains so to be cached.


setCacheSize

public static void setCacheSize(int size)
Sets new cache size. Zero or negative value turns the cache off.


cloneAllChunks

protected static SqlChunk cloneAllChunks(SqlChunk chunk)
Clones all chunks.


aliasColumnsAs

public DbSqlBuilder aliasColumnsAs(ColumnAliasType aliasesType)
Specifies column alias type. May be null when column aliases are not used.


use

public DbSqlBuilder use(java.lang.String name,
                        java.lang.Object value)
Defines object reference and an object.


addChunk

protected DbSqlBuilder addChunk(SqlChunk chunk)
Appends chunk to the list. Chunks must be added using this method.


append

public DbSqlBuilder append(java.lang.String text)
Parses provided text into the list of chunks and appends them to the list.


appendRaw

public DbSqlBuilder appendRaw(java.lang.String text)
Simply adds text without parsing to the query.


_

public DbSqlBuilder _(java.lang.String text)
User-friendly append(String).


_

public DbSqlBuilder _()
Single space shortcut.


generateQuery

public java.lang.String generateQuery()
Generates SQL query.

Specified by:
generateQuery in interface DbSqlGenerator

getColumnData

public java.util.Map<java.lang.String,ColumnData> getColumnData()
Returns an optional map of table and column names, used by ResultSetMapper. May be null.

Specified by:
getColumnData in interface DbSqlGenerator

getQueryParameters

public java.util.Map<java.lang.String,ParameterValue> getQueryParameters()
Description copied from interface: DbSqlGenerator
Returns a map of SQL parameters used by generated query. Must be invoked only after the DbSqlGenerator.generateQuery(). May be null

Specified by:
getQueryParameters in interface DbSqlGenerator

getJoinHints

public java.lang.String[] getJoinHints()
Returns join hints. May be null.

Specified by:
getJoinHints in interface DbSqlGenerator

table

public DbSqlBuilder table(java.lang.String entityName)

table

public DbSqlBuilder table(java.lang.String entityName,
                          java.lang.String alias)

table

public DbSqlBuilder table(java.lang.Object entity,
                          java.lang.String alias)

table

public DbSqlBuilder table(java.lang.Object entity)

column

public DbSqlBuilder column(java.lang.String reference)

column

public DbSqlBuilder column(java.lang.String tableRef,
                           java.lang.String columnRef)

columnsAll

public DbSqlBuilder columnsAll(java.lang.String tableRef)

columnsIds

public DbSqlBuilder columnsIds(java.lang.String tableRef)

ref

public DbSqlBuilder ref(java.lang.String columnRef)

ref

public DbSqlBuilder ref(java.lang.String tableRef,
                        java.lang.String columnRef)

refId

public DbSqlBuilder refId(java.lang.String tableRef)

match

public DbSqlBuilder match(java.lang.String tableRef,
                          java.lang.Object value)
Creates condition part of the query only for existing columns.


match

public DbSqlBuilder match(java.lang.String tableRef,
                          java.lang.String objectRef)

matchIds

public DbSqlBuilder matchIds(java.lang.String tableRef,
                             java.lang.Object value)
Creates condition part of the query for id columns


matchIds

public DbSqlBuilder matchIds(java.lang.String tableRef,
                             java.lang.String objectRef)

matchAll

public DbSqlBuilder matchAll(java.lang.String tableRef,
                             java.lang.Object value)
Creates condition part of the query for all columns, including the null values.


matchAll

public DbSqlBuilder matchAll(java.lang.String tableRef,
                             java.lang.String objectRef)

match

public DbSqlBuilder match(java.lang.String expression)

value

public DbSqlBuilder value(java.lang.String name,
                          java.lang.Object value)

value

public DbSqlBuilder value(java.lang.Object value)

valueRef

public DbSqlBuilder valueRef(java.lang.String objectReference)

colvalue

public DbSqlBuilder colvalue(java.lang.String name,
                             java.lang.Object value)

colvalue

public DbSqlBuilder colvalue(java.lang.Object value)

colvalueRef

public DbSqlBuilder colvalueRef(java.lang.String objectReference)

insert

public DbSqlBuilder insert(java.lang.String entityName,
                           java.lang.Object values)

insert

public DbSqlBuilder insert(java.lang.Class entity,
                           java.lang.Object values)

insert

public DbSqlBuilder insert(java.lang.Object values)

set

public DbSqlBuilder set(java.lang.String tableRef,
                        java.lang.Object values)

setAll

public DbSqlBuilder setAll(java.lang.String tableRef,
                           java.lang.Object values)

query

public DbOrmQuery query()
Returns DbOrmQuery instance for more fluent interface.


query

public DbOrmQuery query(DbSession session)


Copyright © 2003-2010 Jodd Team