public abstract class AbstractDb extends Object implements Serializable
Modifier and Type | Field and Description |
---|---|
protected boolean |
caseInsensitive
是否大小写不敏感(默认大小写不敏感)
|
protected DataSource |
ds |
protected Boolean |
isSupportTransaction
是否支持事务
|
protected SqlConnRunner |
runner |
Constructor and Description |
---|
AbstractDb(DataSource ds,
Dialect dialect)
构造
|
Modifier and Type | Method and Description |
---|---|
protected void |
checkTransactionSupported(Connection conn)
检查数据库是否支持事务,此项检查同一个数据源只检查一次,如果不支持抛出DbRuntimeException异常
|
abstract void |
closeConnection(Connection conn)
关闭连接
自定义关闭连接有利于自定义回收连接机制,或者不关闭 |
long |
count(CharSequence selectSql,
Object... params)
结果的条目数
|
long |
count(Entity where)
结果的条目数
|
long |
count(SqlBuilder sql)
结果的条目数
|
int |
del(Entity where)
删除数据
|
int |
del(String tableName,
String field,
Object value)
删除数据
|
AbstractDb |
disableWrapper()
取消包装器
取消自动添加到字段名、表名上的包装符(例如双引号) |
int |
execute(String sql,
Object... params)
执行非查询语句
语句包括 插入、更新、删除 |
int[] |
executeBatch(Iterable<String> sqls)
批量执行非查询语句
|
int[] |
executeBatch(String... sqls)
批量执行非查询语句
|
int[] |
executeBatch(String sql,
Iterable<Object[]> paramsBatch)
批量执行非查询语句
|
int[] |
executeBatch(String sql,
Object[]... paramsBatch)
Deprecated.
编译器无法区分重载
|
Long |
executeForGeneratedKey(String sql,
Object... params)
执行非查询语句
语句包括 插入、更新、删除 |
List<Entity> |
find(Collection<String> fields,
Entity where)
查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
find(Collection<String> fields,
Entity where,
RsHandler<T> rsh)
查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
List<Entity> |
find(Entity where)
查询数据列表,返回字段由where参数指定
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> List<T> |
find(Entity where,
Class<T> beanClass)
查询数据列表,返回字段由where参数指定
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
find(Entity where,
RsHandler<T> rsh,
String... fields)
查询,返回所有字段
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
find(Query query,
RsHandler<T> rsh)
查询
Query为查询所需数据的一个实体类,此对象中可以定义返回字段、查询条件,查询的表、分页等信息 |
List<Entity> |
findAll(Entity where)
查询数据列表,返回所有字段
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> List<T> |
findAll(Entity where,
Class<T> beanClass)
查询数据列表,返回所有字段
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
List<Entity> |
findAll(String tableName)
查询数据列表,返回所有字段
|
List<Entity> |
findBy(String tableName,
Condition... wheres)
根据多个条件查询数据列表,返回所有字段
|
List<Entity> |
findBy(String tableName,
String field,
Object value)
根据某个字段名条件查询数据列表,返回所有字段
|
List<Entity> |
findLike(String tableName,
String field,
String value,
Condition.LikeType likeType)
根据某个字段名条件查询数据列表,返回所有字段
|
Entity |
get(Entity where)
根据条件实体查询单个记录,当有多条返回时,只显示查询到的第一条
|
<T> Entity |
get(String tableName,
String field,
T value)
根据某个字段(最好是唯一字段)查询单个记录
当有多条返回时,只显示查询到的第一条 |
abstract Connection |
getConnection()
获得链接。
|
DataSource |
getDs()
获得数据源
|
SqlConnRunner |
getRunner()
|
int[] |
insert(Collection<Entity> records)
批量插入数据
需要注意的是,批量插入每一条数据结构必须一致。 |
int |
insert(Entity record)
插入数据
|
Long |
insertForGeneratedKey(Entity record)
插入数据
|
List<Object> |
insertForGeneratedKeys(Entity record)
插入数据
|
int |
insertOrUpdate(Entity record,
String... keys)
插入或更新数据
根据给定的字段名查询数据,如果存在则更新这些数据,否则执行插入 |
<T> PageResult<T> |
page(CharSequence sql,
Page page,
Class<T> elementBeanType,
Object... params)
分页查询
|
PageResult<Entity> |
page(CharSequence sql,
Page page,
Object... params)
分页查询
|
<T> T |
page(CharSequence sql,
Page page,
RsHandler<T> rsh,
Object... params)
分页查询
|
PageResult<Entity> |
page(Collection<String> fields,
Entity where,
int pageNumber,
int pageSize)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
page(Collection<String> fields,
Entity where,
int page,
int numPerPage,
RsHandler<T> rsh)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
PageResult<Entity> |
page(Collection<String> fields,
Entity where,
Page page)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
page(Collection<String> fields,
Entity where,
Page page,
RsHandler<T> rsh)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
PageResult<Entity> |
page(Entity where,
int page,
int numPerPage)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
page(Entity where,
int page,
int numPerPage,
RsHandler<T> rsh)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
PageResult<Entity> |
page(Entity where,
Page page)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
page(Entity where,
Page page,
RsHandler<T> rsh)
分页查询
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
page(SqlBuilder sql,
Page page,
RsHandler<T> rsh)
分页查询
|
List<Entity> |
pageForEntityList(Entity where,
int page,
int numPerPage)
分页查询,结果为Entity列表,不计算总数
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
List<Entity> |
pageForEntityList(Entity where,
Page page)
分页查询,结果为Entity列表,不计算总数
查询条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
<T> T |
query(Func1<Connection,PreparedStatement> statementFunc,
RsHandler<T> rsh)
|
<T> List<T> |
query(String sql,
Class<T> beanClass,
Object... params)
查询
|
List<Entity> |
query(String sql,
Map<String,Object> params)
查询
|
List<Entity> |
query(String sql,
Object... params)
查询
|
<T> T |
query(String sql,
RsHandler<T> rsh,
Map<String,Object> paramMap)
支持占位符的查询,例如:select * from table where field1=:name1
|
<T> T |
query(String sql,
RsHandler<T> rsh,
Object... params)
查询
|
Number |
queryNumber(String sql,
Object... params)
查询单条单个字段记录,并将其转换为Number
|
Entity |
queryOne(String sql,
Object... params)
查询单条记录
|
String |
queryString(String sql,
Object... params)
查询单条单个字段记录,并将其转换为String
|
void |
setCaseInsensitive(boolean caseInsensitive)
设置是否在结果中忽略大小写
如果忽略,则在Entity中调用getXXX时,字段值忽略大小写,默认忽略 |
void |
setRunner(SqlConnRunner runner)
|
AbstractDb |
setWrapper(Character wrapperChar)
设置包装器,包装器用于对表名、字段名进行符号包装(例如双引号),防止关键字与这些表名或字段冲突
|
AbstractDb |
setWrapper(Wrapper wrapper)
设置包装器,包装器用于对表名、字段名进行符号包装(例如双引号),防止关键字与这些表名或字段冲突
|
int |
update(Entity record,
Entity where)
更新数据
更新条件为多个key value对表示,默认key = value,如果使用其它条件可以使用:where.put("key", " > 1"),value也可以传Condition对象,key被忽略 |
int |
upsert(Entity record,
String... keys)
使用upsert语义插入或更新数据
根据给定的字段名查询数据,如果存在则更新这些数据,否则执行插入 如果方言未实现本方法,内部会自动调用insertOrUpdate来实现功能,由于upsert和insert使用有区别,为了兼容性保留原有insertOrUpdate不做变动 |
protected final DataSource ds
protected Boolean isSupportTransaction
protected boolean caseInsensitive
protected SqlConnRunner runner
public AbstractDb(DataSource ds, Dialect dialect)
ds
- 数据源dialect
- 数据库方言public DataSource getDs()
public abstract Connection getConnection() throws SQLException
Connection
SQLException
- 连接获取异常public abstract void closeConnection(Connection conn)
conn
- 连接 Connection
public List<Entity> query(String sql, Map<String,Object> params) throws SQLException
sql
- 查询语句params
- 参数SQLException
- SQL执行异常public List<Entity> query(String sql, Object... params) throws SQLException
sql
- 查询语句params
- 参数SQLException
- SQL执行异常public <T> List<T> query(String sql, Class<T> beanClass, Object... params) throws SQLException
T
- 结果集需要处理的对象类型sql
- 查询语句beanClass
- 元素Bean类型params
- 参数SQLException
- SQL执行异常public Entity queryOne(String sql, Object... params) throws SQLException
sql
- 查询语句params
- 参数SQLException
- SQL执行异常public Number queryNumber(String sql, Object... params) throws SQLException
sql
- 查询语句params
- 参数SQLException
- SQL执行异常public String queryString(String sql, Object... params) throws SQLException
sql
- 查询语句params
- 参数SQLException
- SQL执行异常public <T> T query(String sql, RsHandler<T> rsh, Object... params) throws SQLException
T
- 结果集需要处理的对象类型sql
- 查询语句rsh
- 结果集处理对象params
- 参数SQLException
- SQL执行异常public <T> T query(String sql, RsHandler<T> rsh, Map<String,Object> paramMap) throws SQLException
T
- 结果集需要处理的对象类型sql
- 查询语句,使用参数名占位符,例如:namersh
- 结果集处理对象paramMap
- 参数SQLException
- SQL执行异常public <T> T query(Func1<Connection,PreparedStatement> statementFunc, RsHandler<T> rsh) throws SQLException
T
- 结果集需要处理的对象类型statementFunc
- 自定义PreparedStatement
创建函数rsh
- 结果集处理对象SQLException
- SQL执行异常public int execute(String sql, Object... params) throws SQLException
sql
- SQLparams
- 参数SQLException
- SQL执行异常public Long executeForGeneratedKey(String sql, Object... params) throws SQLException
sql
- SQLparams
- 参数SQLException
- SQL执行异常@Deprecated public int[] executeBatch(String sql, Object[]... paramsBatch) throws SQLException
sql
- SQLparamsBatch
- 批量的参数SQLException
- SQL执行异常public int[] executeBatch(String sql, Iterable<Object[]> paramsBatch) throws SQLException
sql
- SQLparamsBatch
- 批量的参数SQLException
- SQL执行异常public int[] executeBatch(String... sqls) throws SQLException
sqls
- SQL列表SQLException
- SQL执行异常public int[] executeBatch(Iterable<String> sqls) throws SQLException
sqls
- SQL列表SQLException
- SQL执行异常public int insert(Entity record) throws SQLException
record
- 记录SQLException
- SQL执行异常public int insertOrUpdate(Entity record, String... keys) throws SQLException
record
- 记录keys
- 需要检查唯一性的字段SQLException
- SQL执行异常public int upsert(Entity record, String... keys) throws SQLException
record
- 记录keys
- 需要检查唯一性的字段SQLException
- SQL执行异常public int[] insert(Collection<Entity> records) throws SQLException
records
- 记录列表SQLException
- SQL执行异常public List<Object> insertForGeneratedKeys(Entity record) throws SQLException
record
- 记录SQLException
- SQL执行异常public Long insertForGeneratedKey(Entity record) throws SQLException
record
- 记录SQLException
- SQL执行异常public int del(String tableName, String field, Object value) throws SQLException
tableName
- 表名field
- 字段名,最好是主键value
- 值,值可以是列表或数组,被当作IN查询处理SQLException
- SQL执行异常public int del(Entity where) throws SQLException
where
- 条件SQLException
- SQL执行异常public int update(Entity record, Entity where) throws SQLException
record
- 记录where
- 条件SQLException
- SQL执行异常public <T> Entity get(String tableName, String field, T value) throws SQLException
T
- 字段值类型tableName
- 表名field
- 字段名value
- 字段值SQLException
- SQL执行异常public Entity get(Entity where) throws SQLException
where
- 条件SQLException
- SQL执行异常public <T> T find(Collection<String> fields, Entity where, RsHandler<T> rsh) throws SQLException
T
- 需要处理成的结果对象类型fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)rsh
- 结果集处理对象SQLException
- SQL执行异常public List<Entity> find(Collection<String> fields, Entity where) throws SQLException
fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)SQLException
- SQL执行异常public <T> T find(Query query, RsHandler<T> rsh) throws SQLException
T
- 需要处理成的结果对象类型query
- Query
对象,此对象中可以定义返回字段、查询条件,查询的表、分页等信息rsh
- 结果集处理对象SQLException
- SQL执行异常public <T> T find(Entity where, RsHandler<T> rsh, String... fields) throws SQLException
T
- 需要处理成的结果对象类型where
- 条件实体类(包含表名)rsh
- 结果集处理对象fields
- 字段列表,可变长参数如果无值表示查询全部字段SQLException
- SQL执行异常public List<Entity> find(Entity where) throws SQLException
where
- 条件实体类(包含表名)SQLException
- SQL执行异常public <T> List<T> find(Entity where, Class<T> beanClass) throws SQLException
T
- Bean类型where
- 条件实体类(包含表名)beanClass
- Bean类SQLException
- SQL执行异常public List<Entity> findAll(Entity where) throws SQLException
where
- 条件实体类(包含表名)SQLException
- SQL执行异常public <T> List<T> findAll(Entity where, Class<T> beanClass) throws SQLException
T
- Bean类型where
- 条件实体类(包含表名)beanClass
- 返回的对象类型SQLException
- SQL执行异常public List<Entity> findAll(String tableName) throws SQLException
tableName
- 表名SQLException
- SQL执行异常public List<Entity> findBy(String tableName, String field, Object value) throws SQLException
tableName
- 表名field
- 字段名value
- 字段值SQLException
- SQL执行异常public List<Entity> findBy(String tableName, Condition... wheres) throws SQLException
tableName
- 表名wheres
- 条件,多个条件的连接逻辑使用Condition.setLinkOperator(LogicalOperator)
定义SQLException
- SQL执行异常public List<Entity> findLike(String tableName, String field, String value, Condition.LikeType likeType) throws SQLException
tableName
- 表名field
- 字段名value
- 字段值likeType
- Condition.LikeType
SQLException
- SQL执行异常public long count(Entity where) throws SQLException
where
- 查询条件SQLException
- SQL执行异常public long count(SqlBuilder sql) throws SQLException
sql
- sql构造器SQLException
- SQL执行异常public long count(CharSequence selectSql, Object... params) throws SQLException
selectSql
- 查询SQL语句params
- 查询参数SQLException
- SQL执行异常public <T> T page(Collection<String> fields, Entity where, int page, int numPerPage, RsHandler<T> rsh) throws SQLException
T
- 结果对象类型fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)page
- 页码,0表示第一页numPerPage
- 每页条目数rsh
- 结果集处理对象SQLException
- SQL执行异常public <T> T page(Entity where, int page, int numPerPage, RsHandler<T> rsh) throws SQLException
T
- 结果对象类型where
- 条件实体类(包含表名)page
- 页码,0表示第一页numPerPage
- 每页条目数rsh
- 结果集处理对象SQLException
- SQL执行异常public List<Entity> pageForEntityList(Entity where, int page, int numPerPage) throws SQLException
where
- 条件实体类(包含表名)page
- 页码,0表示第一页numPerPage
- 每页条目数SQLException
- SQL执行异常public List<Entity> pageForEntityList(Entity where, Page page) throws SQLException
where
- 条件实体类(包含表名)page
- 分页对象SQLException
- SQL执行异常public <T> T page(Entity where, Page page, RsHandler<T> rsh) throws SQLException
T
- 结果对象类型where
- 条件实体类(包含表名)page
- 分页对象rsh
- 结果集处理对象SQLException
- SQL执行异常public <T> T page(Collection<String> fields, Entity where, Page page, RsHandler<T> rsh) throws SQLException
T
- 结果对象类型fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)page
- 分页对象rsh
- 结果集处理对象SQLException
- SQL执行异常public <T> T page(CharSequence sql, Page page, RsHandler<T> rsh, Object... params) throws SQLException
T
- 结果对象类型sql
- SQL构建器,可以使用SqlBuilder.of(CharSequence)
包装普通SQLpage
- 分页对象rsh
- 结果集处理对象params
- 参数SQLException
- SQL执行异常public <T> PageResult<T> page(CharSequence sql, Page page, Class<T> elementBeanType, Object... params) throws SQLException
T
- Bean类型sql
- SQL构建器,可以使用SqlBuilder.of(CharSequence)
包装普通SQLpage
- 分页对象elementBeanType
- 结果集处理对象params
- 参数SQLException
- SQL执行异常public <T> T page(SqlBuilder sql, Page page, RsHandler<T> rsh) throws SQLException
T
- 处理结果类型,可以将ResultSet转换为给定类型sql
- SQL构建器page
- 分页对象rsh
- 结果集处理对象SQLException
- SQL执行异常public PageResult<Entity> page(CharSequence sql, Page page, Object... params) throws SQLException
sql
- SQL语句字符串page
- 分页对象params
- 参数列表SQLException
- SQL执行异常public PageResult<Entity> page(Collection<String> fields, Entity where, int pageNumber, int pageSize) throws SQLException
fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)pageNumber
- 页码pageSize
- 每页结果数SQLException
- SQL执行异常public PageResult<Entity> page(Collection<String> fields, Entity where, Page page) throws SQLException
fields
- 返回的字段列表,null则返回所有字段where
- 条件实体类(包含表名)page
- 分页对象SQLException
- SQL执行异常public PageResult<Entity> page(Entity where, int page, int numPerPage) throws SQLException
where
- 条件实体类(包含表名)page
- 页码numPerPage
- 每页条目数SQLException
- SQL执行异常public PageResult<Entity> page(Entity where, Page page) throws SQLException
where
- 条件实体类(包含表名)page
- 分页对象SQLException
- SQL执行异常public void setCaseInsensitive(boolean caseInsensitive)
caseInsensitive
- 否在结果中忽略大小写public SqlConnRunner getRunner()
SqlConnRunner
public void setRunner(SqlConnRunner runner)
runner
- SqlConnRunner
public AbstractDb setWrapper(Character wrapperChar)
wrapperChar
- 包装字符,字符会在SQL生成时位于表名和字段名两边,null时表示取消包装public AbstractDb setWrapper(Wrapper wrapper)
wrapper
- 包装器,null表示取消包装public AbstractDb disableWrapper()
protected void checkTransactionSupported(Connection conn) throws SQLException, DbRuntimeException
conn
- ConnectionSQLException
- 获取元数据信息失败DbRuntimeException
- 不支持事务Copyright © 2024. All rights reserved.