类 Db
- java.lang.Object
-
- ai.yue.library.data.jdbc.client.DbBase
-
- ai.yue.library.data.jdbc.client.Db
-
-
构造器概要
构造器 构造器 说明 Db(Dialect dialect)Db(DataSource dataSource)
-
方法概要
所有方法 实例方法 具体方法 已过时的方法 修饰符和类型 方法 说明 Dbclone()克隆Db 适用于需要复制原有Db配置,并创建新的Db对象以进行修改配置等场景 如:需要对操作的某个DAO单独配置DbBase.getJdbcProperties()JdbcProperties#setEnableDeleteQueryFilter(boolean)属性longdelete(String tableName, com.alibaba.fastjson.JSONObject paramJson)删除voiddelete(String tableName, Long id)删除voiddeleteBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量int[]deleteBatch2(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量voiddeleteBatchLogic(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量-逻辑的voiddeleteBatchLogicNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量-逻辑的(不调用DbBase.paramFormat(JSONObject)方法)voiddeleteBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量int[]deleteBatchNotParamFormat2(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)删除-批量voiddeleteByBusinessUk(String tableName, String businessUkValue)删除-通过表业务键longdeleteLogic(String tableName, com.alibaba.fastjson.JSONObject paramJson)删除-逻辑的voiddeleteLogic(String tableName, Long id)删除-逻辑的voiddeleteLogicByBusinessUk(String tableName, String businessUkValue)删除-逻辑的voiddeleteSafe(String tableName, Long id)已过时。com.alibaba.fastjson.JSONObjectget(String tableName, com.alibaba.fastjson.JSONObject paramJson)单个-绝对条件查询<T> Tget(String tableName, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)单个-绝对条件查询com.alibaba.fastjson.JSONObjectgetByBusinessUk(String tableName, String businessUkValue)单个-By业务键<T> TgetByBusinessUk(String tableName, String businessUkValue, Class<T> mappedClass)单个-By业务键com.alibaba.fastjson.JSONObjectgetById(String tableName, long id)单个-ById<T> TgetById(String tableName, Long id, Class<T> mappedClass)单个-ByIdlonggetCount(String tableName)获得总数org.springframework.jdbc.support.rowset.SqlRowSetMetaDatagetMetaData(String tableName)获得表的元数据Longinsert(String tableName, com.alibaba.fastjson.JSONObject paramJson)插入一条数据,主键必须为有序 "id"voidinsertBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)批量插入数据,主键必须为有序 "id"voidinsertBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)批量插入数据,主键必须为有序 "id"(不调用DbBase.paramFormat(JSONObject)方法)。voidinsertNotReturn(String tableName, com.alibaba.fastjson.JSONObject paramJson)插入一条数据LonginsertOrUpdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)插入或更新
表中必须存在数据唯一性约束LonginsertWithSortIdxAutoIncrement(String tableName, com.alibaba.fastjson.JSONObject paramJson, String... uniqueKeys)插入一条数据,并自动递增 sort_idx 使用条件:booleanisDataSize(String tableName, com.alibaba.fastjson.JSONObject paramJson)已过时。booleanisExistData(String tableName, com.alibaba.fastjson.JSONObject paramJson)是否有数据BigDecimaljdbcQueryBigDecimal(String sql, Object... args)BooleanjdbcQueryBoolean(String sql, Object... args)DatejdbcQueryDate(String sql, Object... args)DoublejdbcQueryDouble(String sql, Object... args)com.alibaba.fastjson.JSONObjectjdbcQueryForJson(String sql, Object... args)查询一行数据<T> List<T>jdbcQueryForList(String sql, Class<T> mappedClass, Object... args)查询多行数据List<com.alibaba.fastjson.JSONObject>jdbcQueryForList(String sql, Object... args)查询多行数据<T> TjdbcQueryForObj(String sql, Class<T> mappedClass, Object... args)查询一行数据IntegerjdbcQueryInt(String sql, Object... args)LocalDatejdbcQueryLocalDate(String sql, Object... args)LocalDateTimejdbcQueryLocalDateTime(String sql, Object... args)LongjdbcQueryLong(String sql, Object... args)NumberjdbcQueryNumber(String sql, Object... args)StringjdbcQueryStr(String sql, Object... args)List<com.alibaba.fastjson.JSONObject>list(String tableName, com.alibaba.fastjson.JSONObject paramJson)列表-绝对条件查询List<com.alibaba.fastjson.JSONObject>list(String tableName, com.alibaba.fastjson.JSONObject paramJson, SortEnum sortEnum)列表-绝对条件查询<T> List<T>list(String tableName, com.alibaba.fastjson.JSONObject paramJson, SortEnum sortEnum, Class<T> mappedClass)列表-绝对条件查询<T> List<T>list(String tableName, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)列表-绝对条件查询List<com.alibaba.fastjson.JSONObject>listAll(String tableName)列表-查询表中所有数据<T> List<T>listAll(String tableName, Class<T> mappedClass)列表-查询表中所有数据PageVO<com.alibaba.fastjson.JSONObject>page(String tableName, PageIPO pageIPO)单表分页查询PageVO<com.alibaba.fastjson.JSONObject>page(String tableName, PageIPO pageIPO, SortEnum sortEnum)单表分页查询<T> PageVO<T>page(String tableName, PageIPO pageIPO, SortEnum sortEnum, Class<T> mappedClass)单表分页查询<T> PageVO<T>page(String tableName, PageIPO pageIPO, Class<T> mappedClass)单表分页查询PageBeforeAndAfterVOpageBeforeAndAfter(String querySql, PageIPO pageIPO, Long equalsId)根据相同的列表条件,获得上一条与下一条数据PageVO<com.alibaba.fastjson.JSONObject>pageSql(String querySql, PageIPO pageIPO)复杂SQL分页查询<T> PageVO<T>pageSql(String querySql, PageIPO pageIPO, Class<T> mappedClass)复杂SQL分页查询PageVO<com.alibaba.fastjson.JSONObject>pageSql(String countSql, String querySql, PageIPO pageIPO)复杂SQL分页查询<T> PageVO<T>pageSql(String countSql, String querySql, PageIPO pageIPO, Class<T> mappedClass)复杂SQL分页查询PageVO<com.alibaba.fastjson.JSONObject>pageWhere(String tableName, String whereSql, PageIPO pageIPO)单表分页查询<T> PageVO<T>pageWhere(String tableName, String whereSql, PageIPO pageIPO, Class<T> mappedClass)单表分页查询<T> TqueryObject(String sql, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)longupdate(String sql, com.alibaba.fastjson.JSONObject paramJson)更新数据
同 NamedParameterJdbcTemplate.update(String, Map)voidupdate(String sql, com.alibaba.fastjson.JSONObject paramJson, int expectedValue, DbExpectedEnum dBExpectedEnum)更新数据
对 NamedParameterJdbcTemplate.update(String, Map) 方法的增强实现 将会对更新所影响的行数进行预期判断,若结果不符合预期值:expectedValue,那么此处便会抛出一个 DbExceptionLongupdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions)绝对条件更新优化SQL
相对条件更新优化SQL可参照如下编写:
UPDATE table
SET paramNumber1 = paramNumber1 - 1, ...
WHERE
id = :id
AND
paramNumber1 > 0
AND ...Longupdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)绝对条件更新优化SQLvoidupdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum, int expectedValue, DbExpectedEnum dBExpectedEnum)绝对条件更新优化SQLLongupdate(String sql, org.springframework.jdbc.core.namedparam.SqlParameterSource paramSource)更新或插入数据,主键默认为id时使用。org.springframework.jdbc.support.KeyHolderupdate(String sql, org.springframework.jdbc.core.namedparam.SqlParameterSource paramSource, org.springframework.jdbc.support.KeyHolder generatedKeyHolder)更新或插入数据
同 NamedParameterJdbcTemplate.update(String, SqlParameterSource, KeyHolder)int[]updateBatch(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)对多组参数进行批量更新处理
同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])voidupdateBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, String[] conditions, DbUpdateEnum dBUpdateEnum)更新-批量int[]updateBatchNotParamFormat(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)对多组参数进行批量更新处理
同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])voidupdateBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, String[] conditions, DbUpdateEnum dBUpdateEnum)更新-批量(不调用DbBase.paramFormat(JSONObject)方法)voidupdateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject paramJson)更新-By业务键voidupdateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)批量更新-By业务键voidupdateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject paramJson, DbUpdateEnum dBUpdateEnum)更新-By业务键voidupdateByBusinessUkNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)批量更新-By业务键(不调用DbBase.paramFormat(JSONObject)方法)voidupdateById(String tableName, com.alibaba.fastjson.JSONObject paramJson)更新-ByIdvoidupdateById(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)批量更新-ByIdvoidupdateById(String tableName, com.alibaba.fastjson.JSONObject paramJson, DbUpdateEnum dBUpdateEnum)更新-ByIdvoidupdateByIdNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)批量更新-ById(不调用DbBase.paramFormat(JSONObject)方法)voidupdateSort(String tableName, Long id, Integer move, String... uniqueKeys)更新-排序
使用限制:见 DbInsert.insertWithSortIdxAutoIncrement(String, JSONObject, String...)protected StringupdateSqlBuild(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)构建绝对条件更新优化SQL-
从类继承的方法 ai.yue.library.data.jdbc.client.DbBase
aopAfter, aopAfter, aopAfter, aopBefore, aopBefore, audit, extractTables, getDataSource, getDeleteWhereSql, getJdbcProperties, getJdbcTemplate, getNamedParameterJdbcTemplate, getRowMapper, isDataSize, isUpdateAndExpectedEqual, isUpdateAndExpectedGreaterThanEqual, listResultToGetResult, paramFormat, paramToWhereSql, paramToWhereSql, paramValidate, paramValidate, paramValidate, paramValidate, paramValidate, paramValidate, paramValidate, paramValidate, queryForJson, queryForList, queryForList, queryForObject, queryForRowSet, resultToJson, resultToObject, setDataSource, updateAndExpectedEqual, updateAndExpectedGreaterThanEqual, updateBatchAndExpectedEqual
-
-
-
-
构造器详细资料
-
Db
public Db(DataSource dataSource)
-
Db
public Db(Dialect dialect)
-
-
方法详细资料
-
clone
public Db clone()
克隆Db- 适用于需要复制原有Db配置,并创建新的Db对象以进行修改配置等场景
- 如:需要对操作的某个DAO单独配置
DbBase.getJdbcProperties()JdbcProperties#setEnableDeleteQueryFilter(boolean)属性
-
insert
@Transactional public Long insert(String tableName, com.alibaba.fastjson.JSONObject paramJson)
插入一条数据,主键必须为有序 "id"- 参数:
tableName- 表名paramJson- 参数- 返回:
- 返回主键值
-
insertNotReturn
@Transactional public void insertNotReturn(String tableName, com.alibaba.fastjson.JSONObject paramJson)
插入一条数据- 参数:
tableName- 表名paramJson- 参数
-
insertWithSortIdxAutoIncrement
@Transactional public Long insertWithSortIdxAutoIncrement(String tableName, com.alibaba.fastjson.JSONObject paramJson, @Nullable String... uniqueKeys)
插入一条数据,并自动递增 sort_idx使用条件:
1. id 默认为主键
2. sort_idx 默认为排序字段,类型为 int unsigned 。DDL示例:
`sort_idx` tinyint(2) UNSIGNED NOT NULL COMMENT '排序-索引'- 参数:
tableName- 表名paramJson- 插入数据uniqueKeys- 同sort_idx字段组合的唯一约束keys(表中不建议建立sort_idx字段的唯一约束,但可以建立普通索引,以便于提高查询性能),可选参数- 返回:
- 返回主键值
-
insertBatch
public void insertBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
批量插入数据,主键必须为有序 "id"- 参数:
tableName- 表名paramJsons- 参数
-
insertBatchNotParamFormat
@Transactional public void insertBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
批量插入数据,主键必须为有序 "id"(不调用DbBase.paramFormat(JSONObject)方法)。- 参数:
tableName- 表名paramJsons- 参数
-
insertOrUpdate
@Transactional public Long insertOrUpdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)
插入或更新
表中必须存在数据唯一性约束更新触发条件:此数据若存在唯一性约束则更新,否则便执行插入数据
MySQL执行示例:
INSERT INTO table (param1, param2, ...)
VALUES
(:param1, :param2, ...)
ON DUPLICATE KEY UPDATE
condition = condition + :condition, ...- 参数:
tableName- 表名paramJson- 插入或更新所用到的参数conditions- 更新条件(对应paramJson内的key值)dBUpdateEnum- 更新类型 DbUpdateEnum- 返回:
- 受影响的行数
-
delete
@Transactional(rollbackFor={java.lang.RuntimeException.class,java.lang.Error.class}) public void delete(String tableName, Long id)删除数据删除前会先进行条数确认
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用deleteByBusinessUk(String, String)- 参数:
tableName- 表名id- 主键id
-
deleteSafe
@Deprecated public void deleteSafe(String tableName, Long id)
已过时。删除-安全的数据删除前会先进行条数确认
- 参数:
tableName- 表名id- 主键id
-
deleteByBusinessUk
@Transactional(rollbackFor={java.lang.RuntimeException.class,java.lang.Error.class}) public void deleteByBusinessUk(String tableName, String businessUkValue)删除-通过表业务键数据删除前会先进行条数确认
默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名businessUkValue- 业务键的唯一值
-
delete
@Transactional(rollbackFor={java.lang.RuntimeException.class,java.lang.Error.class}) public long delete(String tableName, com.alibaba.fastjson.JSONObject paramJson)删除- 参数:
tableName- 表名paramJson- 条件- 返回:
- 删除所影响的行数
-
deleteBatch
@Transactional public void deleteBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 条件数组
-
deleteBatchNotParamFormat
@Transactional public void deleteBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量不调用
DbBase.paramFormat(JSONObject)方法一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 条件数组
-
deleteBatch2
@Transactional public int[] deleteBatch2(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
示例:
DELETE FROM table WHERE id = :id- 参数:
sql- 要执行的删除SQLparamJsons- 删除所用到的条件数组- 返回:
- 一个数组,其中包含受批处理中每个更新影响的行数
-
deleteBatchNotParamFormat2
@Transactional public int[] deleteBatchNotParamFormat2(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量不调用
DbBase.paramFormat(JSONObject)方法同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
示例:
DELETE FROM table WHERE id = :id- 参数:
sql- 要执行的删除SQLparamJsons- 删除所用到的条件数组- 返回:
- 一个数组,其中包含受批处理中每个更新影响的行数
-
deleteLogic
@Transactional public void deleteLogic(String tableName, Long id)
删除-逻辑的数据非真实删除,而是更改 "delete_time" 字段值为时间戳,代表数据已删除
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用deleteLogicByBusinessUk(String, String)- 参数:
tableName- 表名id- 主键id
-
deleteLogicByBusinessUk
@Transactional public void deleteLogicByBusinessUk(String tableName, String businessUkValue)
删除-逻辑的数据非真实删除,而是更改 "delete_time" 字段值为时间戳,代表数据已删除
- 参数:
tableName- 表名businessUkValue- 业务键的唯一值
-
deleteLogic
@Transactional public long deleteLogic(String tableName, com.alibaba.fastjson.JSONObject paramJson)
删除-逻辑的数据非真实删除,而是更改 "delete_time" 字段值为时间戳,代表数据已删除
- 参数:
tableName- 表名paramJson- 条件- 返回:
- 删除所影响的行数
-
deleteBatchLogic
@Transactional public void deleteBatchLogic(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量-逻辑的数据非真实删除,而是更改 "delete_time" 字段值为时间戳,代表数据已删除
一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 条件数组
-
deleteBatchLogicNotParamFormat
@Transactional public void deleteBatchLogicNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
删除-批量-逻辑的(不调用DbBase.paramFormat(JSONObject)方法)数据非真实删除,而是更改 "delete_time" 字段值为时间戳,代表数据已删除
一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 条件数组
-
update
@Transactional public org.springframework.jdbc.support.KeyHolder update(String sql, org.springframework.jdbc.core.namedparam.SqlParameterSource paramSource, org.springframework.jdbc.support.KeyHolder generatedKeyHolder)
更新或插入数据
同 NamedParameterJdbcTemplate.update(String, SqlParameterSource, KeyHolder)- 参数:
sql- 要执行的更新SQLparamSource- 更新所用到的参数:MapSqlParameterSource,BeanPropertySqlParameterSource- 返回:
- 自动生成的键(可能由JDBC insert语句返回)或更新的主键id值。
-
update
@Transactional public Long update(String sql, org.springframework.jdbc.core.namedparam.SqlParameterSource paramSource)
更新或插入数据,主键默认为id时使用。- 参数:
sql- 更新或插入SQLparamSource- 更新所用到的参数:MapSqlParameterSource,BeanPropertySqlParameterSource- 返回:
- 自动生成的键(可能由JDBC insert语句返回)或更新的主键id值。
-
update
@Transactional public long update(String sql, com.alibaba.fastjson.JSONObject paramJson)
更新数据
同 NamedParameterJdbcTemplate.update(String, Map)- 参数:
sql- 要执行的更新SQLparamJson- 更新所用到的参数- 返回:
- 受影响的行数
-
update
@Transactional public void update(String sql, com.alibaba.fastjson.JSONObject paramJson, int expectedValue, DbExpectedEnum dBExpectedEnum)
更新数据
- 对 NamedParameterJdbcTemplate.update(String, Map) 方法的增强实现
- 将会对更新所影响的行数进行预期判断,若结果不符合预期值:expectedValue,那么此处便会抛出一个 DbException
- 参数:
sql- 要执行的更新SQLparamJson- 更新所用到的参数expectedValue- 更新所影响的行数预期值dBExpectedEnum- 预期值确认方式
-
updateBatch
@Transactional public int[] updateBatch(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
对多组参数进行批量更新处理
同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])- 参数:
sql- 要执行的更新SQLparamJsons- 更新所用到的参数数组- 返回:
- 一个数组,其中包含受批处理中每个更新影响的行数
-
updateBatchNotParamFormat
@Transactional public int[] updateBatchNotParamFormat(String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
对多组参数进行批量更新处理
同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])- 参数:
sql- 要执行的更新SQLparamJsons- 更新所用到的参数数组(不调用DbBase.paramFormat(JSONObject)方法)- 返回:
- 一个数组,其中包含受批处理中每个更新影响的行数
-
updateSqlBuild
protected String updateSqlBuild(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)
构建绝对条件更新优化SQL- 参数:
tableName- 表名paramJson- 更新所用到的参数conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)dBUpdateEnum- 更新类型 DbUpdateEnum- 返回:
- 绝对条件更新优化SQL
-
update
@Transactional public Long update(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions)
绝对条件更新优化SQL
相对条件更新优化SQL可参照如下编写:
UPDATE table
SET paramNumber1 = paramNumber1 - 1, ...
WHERE
id = :id
AND
paramNumber1 > 0
AND ...- 参数:
tableName- 表名paramJson- 更新所用到的参数(where条件参数不会用于set值的更新)conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)- 返回:
- 受影响的行数
-
update
@Transactional public Long update(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)
绝对条件更新优化SQL- 参数:
tableName- 表名paramJson- 更新所用到的参数conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)dBUpdateEnum- 更新类型 DbUpdateEnum- 返回:
- 受影响的行数
-
update
@Transactional public void update(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum, int expectedValue, DbExpectedEnum dBExpectedEnum)
绝对条件更新优化SQL- 参数:
tableName- 表名paramJson- 更新所用到的参数conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)dBUpdateEnum- 更新类型 DbUpdateEnumexpectedValue- 更新所影响的行数预期值dBExpectedEnum- 预期值确认方式
-
updateById
@Transactional public void updateById(String tableName, com.alibaba.fastjson.JSONObject paramJson)
更新-ById根据表中主键ID进行更新
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用updateByBusinessUk(String, JSONObject)- 参数:
tableName- 表名paramJson- 更新所用到的参数(包含主键ID字段)
-
updateById
@Transactional public void updateById(String tableName, com.alibaba.fastjson.JSONObject paramJson, DbUpdateEnum dBUpdateEnum)
更新-ById根据表中主键ID进行更新
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用updateByBusinessUk(String, JSONObject, DbUpdateEnum)- 参数:
tableName- 表名paramJson- 更新所用到的参数(包含主键ID字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateById
@Transactional public void updateById(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)
批量更新-ById根据表中主键ID进行批量更新
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用updateByBusinessUk(String, JSONObject[], DbUpdateEnum)- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组(包含主键ID字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateByIdNotParamFormat
@Transactional public void updateByIdNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)
批量更新-ById(不调用DbBase.paramFormat(JSONObject)方法)根据表中主键ID进行批量更新
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用updateByBusinessUkNotParamFormat(String, JSONObject[], DbUpdateEnum)- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组(包含主键ID字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateByBusinessUk
@Transactional public void updateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject paramJson)
更新-By业务键根据表中业务键进行更新
默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名paramJson- 更新所用到的参数(包含业务键字段)
-
updateByBusinessUk
@Transactional public void updateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject paramJson, DbUpdateEnum dBUpdateEnum)
更新-By业务键根据表中业务键进行更新
默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名paramJson- 更新所用到的参数(包含业务键字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateByBusinessUk
@Transactional public void updateByBusinessUk(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)
批量更新-By业务键根据表中业务键进行批量更新
默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组(包含业务键字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateByBusinessUkNotParamFormat
@Transactional public void updateByBusinessUkNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DbUpdateEnum dBUpdateEnum)
- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组(包含业务键字段)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateSort
@Transactional public void updateSort(String tableName, Long id, Integer move, @Nullable String... uniqueKeys)
更新-排序
使用限制:见 DbInsert.insertWithSortIdxAutoIncrement(String, JSONObject, String...)- 参数:
tableName- 表名id- 主键IDmove- sort_idx移动位数(值不可等于零,正整数表示:向后移动几位,负整数表示:向前移动几位)uniqueKeys- 同sort_idx字段组合的唯一约束keys(表中不建议建立sort_idx字段的唯一约束,但可以建立普通索引,以便于提高查询性能),可选参数
-
updateBatch
public void updateBatch(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, String[] conditions, DbUpdateEnum dBUpdateEnum)
更新-批量一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)dBUpdateEnum- 更新类型 DbUpdateEnum
-
updateBatchNotParamFormat
@Transactional(rollbackFor={java.lang.RuntimeException.class,java.lang.Error.class}) public void updateBatchNotParamFormat(String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, String[] conditions, DbUpdateEnum dBUpdateEnum)更新-批量(不调用DbBase.paramFormat(JSONObject)方法)一组条件对应一条数据,并且每组条件都采用相同的key
- 参数:
tableName- 表名paramJsons- 更新所用到的参数数组conditions- 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)dBUpdateEnum- 更新类型 DbUpdateEnum
-
queryObject
@Deprecated public <T> T queryObject(String sql, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)
同 NamedParameterJdbcTemplate.queryForObject(String, Map, Class)指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。
- 参数:
sql- 要执行的SQL查询paramJson- 要绑定到查询的参数映射mappedClass- 结果对象期望匹配的普通类型- 返回:
- 所需普通类型的结果对象(如:Long, String, Boolean)或null
-
isDataSize
@Deprecated public boolean isDataSize(String tableName, com.alibaba.fastjson.JSONObject paramJson)
已过时。是否有数据- 参数:
tableName- 表名paramJson- 查询参数- 返回:
- 是否有数据
-
isExistData
public boolean isExistData(String tableName, com.alibaba.fastjson.JSONObject paramJson)
是否有数据- 参数:
tableName- 表名paramJson- 查询参数- 返回:
- 是否有数据
-
getMetaData
public org.springframework.jdbc.support.rowset.SqlRowSetMetaData getMetaData(String tableName)
获得表的元数据检索元数据,即此行集合的列的数字、类型和属性。
- 参数:
tableName- 表名- 返回:
- Spring的SqlRowSet的元数据接口
-
getCount
public long getCount(String tableName)
获得总数- 参数:
tableName- 表名- 返回:
- 总数
-
getById
public com.alibaba.fastjson.JSONObject getById(String tableName, long id)
单个-ById字段名=id,一般为表自增ID-主键
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用getByBusinessUk(String, String)- 参数:
tableName- 表名id- 主键ID- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
getById
public <T> T getById(String tableName, Long id, Class<T> mappedClass)
单个-ById字段名=id,一般为表自增ID-主键
依赖于接口传入 "id" 参数时慎用此方法,避免有序主键被遍历风险,造成数据越权行为。推荐使用getByBusinessUk(String, String, Class)- 参数:
tableName- 表名id- 主键IDmappedClass- 查询结果映射类型,支持JavaBean与简单类型(如:Long, String, Boolean)- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
getByBusinessUk
public com.alibaba.fastjson.JSONObject getByBusinessUk(String tableName, String businessUkValue)
单个-By业务键默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名businessUkValue- 业务键的唯一值- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
getByBusinessUk
public <T> T getByBusinessUk(String tableName, String businessUkValue, Class<T> mappedClass)
单个-By业务键默认业务键为key
业务键值推荐使用UUID5
- 参数:
tableName- 表名businessUkValue- 业务键的唯一值mappedClass- 查询结果映射类型,支持JavaBean与简单类型(如:Long, String, Boolean)- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
get
public com.alibaba.fastjson.JSONObject get(String tableName, com.alibaba.fastjson.JSONObject paramJson)
单个-绝对条件查询- 参数:
tableName- 表名paramJson- 查询参数- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
get
public <T> T get(String tableName, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)
单个-绝对条件查询- 参数:
tableName- 表名paramJson- 查询参数mappedClass- 查询结果映射类型,支持JavaBean与简单类型(如:Long, String, Boolean)- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
list
public List<com.alibaba.fastjson.JSONObject> list(String tableName, com.alibaba.fastjson.JSONObject paramJson)
列表-绝对条件查询- 参数:
tableName- 表名paramJson- 查询参数- 返回:
- 列表数据
-
list
public <T> List<T> list(String tableName, com.alibaba.fastjson.JSONObject paramJson, Class<T> mappedClass)
列表-绝对条件查询- 类型参数:
T- 泛型- 参数:
tableName- 表名paramJson- 查询参数mappedClass- 映射类- 返回:
- 列表数据
-
list
public List<com.alibaba.fastjson.JSONObject> list(String tableName, com.alibaba.fastjson.JSONObject paramJson, SortEnum sortEnum)
列表-绝对条件查询- 参数:
tableName- 表名paramJson- 查询参数sortEnum- 排序方式- 返回:
- 列表数据
-
list
public <T> List<T> list(String tableName, com.alibaba.fastjson.JSONObject paramJson, SortEnum sortEnum, Class<T> mappedClass)
列表-绝对条件查询- 类型参数:
T- 泛型- 参数:
tableName- 表名paramJson- 查询参数sortEnum- 排序方式mappedClass- 映射类- 返回:
- 列表数据
-
listAll
public List<com.alibaba.fastjson.JSONObject> listAll(String tableName)
列表-查询表中所有数据- 参数:
tableName- 表名- 返回:
- 列表数据
-
listAll
public <T> List<T> listAll(String tableName, Class<T> mappedClass)
列表-查询表中所有数据- 类型参数:
T- 泛型- 参数:
tableName- 表名mappedClass- 映射类- 返回:
- 列表数据
-
page
public PageVO<com.alibaba.fastjson.JSONObject> page(String tableName, PageIPO pageIPO)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT 100000,20 ) b where a.id=b.id- 参数:
tableName- 表名pageIPO- 分页查询参数 PageIPO,所有的条件参数,都将以等于的形式进行SQL拼接- 返回:
- count(总数),data(分页列表数据)
-
page
public <T> PageVO<T> page(String tableName, PageIPO pageIPO, Class<T> mappedClass)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT 100000,20 ) b where a.id=b.id- 类型参数:
T- 泛型- 参数:
tableName- 表名pageIPO- 分页查询参数 PageIPO,所有的条件参数,都将以等于的形式进行SQL拼接mappedClass- 映射类- 返回:
- count(总数),data(分页列表数据)
-
page
public PageVO<com.alibaba.fastjson.JSONObject> page(String tableName, PageIPO pageIPO, SortEnum sortEnum)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 ORDER BY id LIMIT 100000,20 ) b where a.id=b.id
-
page
public <T> PageVO<T> page(String tableName, PageIPO pageIPO, SortEnum sortEnum, Class<T> mappedClass)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 ORDER BY id LIMIT 100000,20 ) b where a.id=b.id
-
pageWhere
public PageVO<com.alibaba.fastjson.JSONObject> pageWhere(String tableName, String whereSql, PageIPO pageIPO)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT 100000,20 ) b where a.id=b.id- 参数:
tableName- 表名whereSql- 自定义WHERE语句,若此参数为空,那么所有的条件参数,都将以等于的形式进行SQL拼接。
SQL示例:WHERE 条件pageIPO- 分页查询参数 PageIPO- 返回:
- count(总数),data(分页列表数据)
-
pageWhere
public <T> PageVO<T> pageWhere(String tableName, String whereSql, PageIPO pageIPO, Class<T> mappedClass)
单表分页查询
阿里最优SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT 100000,20 ) b where a.id=b.id- 类型参数:
T- 泛型- 参数:
tableName- 表名whereSql- 自定义WHERE语句,若此参数为空,那么所有的条件参数,都将以等于的形式进行SQL拼接。
SQL示例:WHERE 条件pageIPO- 分页查询参数 PageIPOmappedClass- 映射类- 返回:
- count(总数),data(分页列表数据)
-
pageSql
public PageVO<com.alibaba.fastjson.JSONObject> pageSql(String querySql, PageIPO pageIPO)
复杂SQL分页查询
阿里最优查询SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT :page, :limit) b where a.id=b.id- 参数:
querySql- 用于查询数据的sql语句pageIPO- 分页查询参数 PageIPO- 返回:
- count(总数),data(分页列表数据)
-
pageSql
public <T> PageVO<T> pageSql(String querySql, PageIPO pageIPO, Class<T> mappedClass)
复杂SQL分页查询
阿里最优查询SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT :page, :limit) b where a.id=b.id- 类型参数:
T- 泛型- 参数:
querySql- 用于查询数据的sql语句pageIPO- 分页查询参数 PageIPOmappedClass- 映射类- 返回:
- count(总数),data(分页列表数据)
-
pageSql
public PageVO<com.alibaba.fastjson.JSONObject> pageSql(@Nullable String countSql, String querySql, PageIPO pageIPO)
复杂SQL分页查询
统计SQL示例:
SELECT count(*) count FROM 表1 a, (select id from 表1 where 条件) b where a.id=b.id
阿里最优查询SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT :page, :limit) b where a.id=b.id- 参数:
countSql- 用于统计总数的sql语句 (注意:count(*)必须拥有count别名) 同时countSql可以为null表示不统计 可选参数querySql- 用于查询数据的sql语句pageIPO- 分页查询参数 PageIPO- 返回:
- count(总数),data(分页列表数据)
-
pageSql
public <T> PageVO<T> pageSql(@Nullable String countSql, String querySql, PageIPO pageIPO, Class<T> mappedClass)
复杂SQL分页查询
统计SQL示例:
SELECT count(*) count FROM 表1 a, (select id from 表1 where 条件) b where a.id=b.id
阿里最优查询SQL示例:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT :page, :limit) b where a.id=b.id- 类型参数:
T- 泛型- 参数:
countSql- 用于统计总数的sql语句 (注意:count(*)必须拥有count别名) 同时countSql可以为null表示不统计 可选参数querySql- 用于查询数据的sql语句pageIPO- 分页查询参数 PageIPOmappedClass- 映射类- 返回:
- count(总数),data(分页列表数据)
-
pageBeforeAndAfter
public PageBeforeAndAfterVO pageBeforeAndAfter(String querySql, PageIPO pageIPO, Long equalsId)
根据相同的列表条件,获得上一条与下一条数据- 参数:
querySql- 用于查询数据的sql语句pageIPO- 分页查询参数 PageIPOequalsId- 做比较的条件ID(将与查询结果的主键ID做比较)- 返回:
- PageBeforeAndAfterVO
-
jdbcQueryForList
public List<com.alibaba.fastjson.JSONObject> jdbcQueryForList(String sql, @Nullable Object... args)
查询多行数据同
JdbcTemplate.queryForList(String, Object...)执行以 '?' 作为参数占位符的SQL语句进行列表查询
- 参数:
sql- SQL语句中可以包含一个或多个 '?' 参数占位符args- 查询参数,有序的对应SQL语句中的 '?' 参数占位符- 返回:
- 多行查询结果
-
jdbcQueryForList
public <T> List<T> jdbcQueryForList(String sql, Class<T> mappedClass, @Nullable Object... args)
查询多行数据对
JdbcTemplate.queryForList(String, Class, Object...)方法的优化实现执行以 '?' 作为参数占位符的SQL语句进行列表查询
- 参数:
sql- SQL语句中可以包含一个或多个 '?' 参数占位符mappedClass- 查询结果映射类型,支持JavaBean与简单类型(如:Long, String, Boolean)args- 查询参数,有序的对应SQL语句中的 '?' 参数占位符- 返回:
- 多行查询结果
-
jdbcQueryForJson
public com.alibaba.fastjson.JSONObject jdbcQueryForJson(String sql, @Nullable Object... args)
查询一行数据对
JdbcTemplate.queryForMap(String, Object...)方法的优化实现执行以 '?' 作为参数占位符的SQL语句进行单行查询
- 参数:
sql- SQL语句中可以包含一个或多个 '?' 参数占位符args- 查询参数,有序的对应SQL语句中的 '?' 参数占位符- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
jdbcQueryForObj
public <T> T jdbcQueryForObj(String sql, Class<T> mappedClass, @Nullable Object... args)
查询一行数据对
JdbcTemplate.queryForObject(String, Class, Object...)方法的优化实现执行以 '?' 作为参数占位符的SQL语句进行单行查询
- 参数:
sql- SQL语句中可以包含一个或多个 '?' 参数占位符mappedClass- 查询结果映射类型,支持JavaBean与简单类型(如:Long, String, Boolean)args- 查询参数,有序的对应SQL语句中的 '?' 参数占位符- 返回:
- 可以是一个正确的单行查询结果、或null、或查询结果是多条数据而引发的预期错误异常
-
jdbcQueryBigDecimal
public BigDecimal jdbcQueryBigDecimal(String sql, @Nullable Object... args)
-
jdbcQueryLocalDateTime
public LocalDateTime jdbcQueryLocalDateTime(String sql, @Nullable Object... args)
-
-