-
- All Implemented Interfaces:
-
cn.cloudself.query.resolver.IQueryStructureResolver
public abstract class QSR implements IQueryStructureResolver
IQueryStructureResolver的模板类, 一般继承该类重写 相应的抽象方法即可 queryStructureToSql, insertObjectToSql, getColumnsDynamic也是可以重写的
如需自行实现IQueryStructureResolver, 需要处理生命周期方法beforeRunSql, afterRunSql以及添加对dryRun模式的支持
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public final classQSR.Column
-
Constructor Summary
Constructors Constructor Description QSR()
-
Method Summary
Modifier and Type Method Description abstract <T extends Any> List<T>doSelect(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)abstract <T extends Any> TdoUpdate(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)abstract <T extends Any> TdoDelete(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)abstract <ID extends Any> List<ID>doInsert(Class<?> queryPro, String sql, Array<out Object> params, Class<ID> clazz)Pair<String, Array<Object>>queryStructureToSql(QueryStructure queryStructure)提供 QueryStructure,将其解析为SQLSQL中的参数 默认的实现为JDBC支持的?的风格该方法可重写List<SqlAndParams>insertObjectToSql(Collection<Object> objs, String table, Collection<QSR.Column> columns)提供:表名,列信息, 将需要插入的对象转为sql语句约定:当返回结果的size为1且groupedParams有值。表明数据量较大,使用批量插入模式 (可优化) Collection<QSR.Column>getColumnsDynamic(String table_)提供:表名生成列信息(如需使用动态插入语句,例如 QueryProSql.create().insert(Map,则必须重写以实现该功能,可参考JdbcQSR. <T extends Any> IQueryStructureResolver.PreparedSql<List<T>>resolve(QueryStructure queryStructure, QueryPayload payload, Class<T> clazz)将QueryStructure解析至SQL并执行 <T extends Any> IQueryStructureResolver.PreparedSql<List<T>>resolve(String sql, Array<out Object> params, Class<T> clazz, QueryStructureAction action)执行一个SQL查询 <T extends Any> IQueryStructureResolver.PreparedSql<T>exec(Array<out String> sqlArr, Array<out Array<out Object>> paramsArr, Class<T> clazz)使用多条语句和参数执行更新,创建,删除等非select语句 <ID extends Any, V extends Any, M extends Map<String, V>> IQueryStructureResolver.PreparedSql<List<ID>>insert(Collection<M> objs, String table, Class<ID> idColumnClazz)动态插入 通过 objs 配合数据库表名,动态生成sql语句,并执行 -
-
Method Detail
-
doSelect
abstract <T extends Any> List<T> doSelect(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)
- Parameters:
clazz- 需返回的对象类型
-
doUpdate
abstract <T extends Any> T doUpdate(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)
- Parameters:
clazz- 需返回的对象的类型,一般添加对 Integer, Boolean的支持即可
-
doDelete
abstract <T extends Any> T doDelete(Class<?> queryPro, String sql, Array<out Object> params, Class<T> clazz)
- Parameters:
clazz- 需返回的对象的类型,一般添加对 Integer, Boolean的支持即可
-
doInsert
abstract <ID extends Any> List<ID> doInsert(Class<?> queryPro, String sql, Array<out Object> params, Class<ID> clazz)
- Parameters:
clazz- insert方法需返回id列表,clazz是指ID的类型 如Long, Integer, String等
-
queryStructureToSql
Pair<String, Array<Object>> queryStructureToSql(QueryStructure queryStructure)
提供
QueryStructure,将其解析为SQLSQL中的参数 默认的实现为JDBC支持的?的风格该方法可重写
-
insertObjectToSql
List<SqlAndParams> insertObjectToSql(Collection<Object> objs, String table, Collection<QSR.Column> columns)
提供:表名,列信息, 将需要插入的对象转为sql语句
约定:当返回结果的size为1且groupedParams有值。表明数据量较大,使用批量插入模式 (可优化)
-
getColumnsDynamic
Collection<QSR.Column> getColumnsDynamic(String table_)
提供:表名
生成列信息(如需使用动态插入语句,例如 QueryProSql.create().insert(Map,则必须重写以实现该功能,可参考JdbcQSR.getColumnsDynamic的实现)
该方法可重写
-
resolve
<T extends Any> IQueryStructureResolver.PreparedSql<List<T>> resolve(QueryStructure queryStructure, QueryPayload payload, Class<T> clazz)
将QueryStructure解析至SQL并执行
- Parameters:
queryStructure- QueryStructureclazz- QSR模版支持JavaBean,Map, 以及Long,String,Boolean等基本类型。另外,默认使用的JdbcQSR(为QSR的子类)还额外支持IResultSetWalker
-
resolve
<T extends Any> IQueryStructureResolver.PreparedSql<List<T>> resolve(String sql, Array<out Object> params, Class<T> clazz, QueryStructureAction action)
执行一个SQL查询
- Parameters:
sql- 单条sql语句 e.g.params- 参数数组 e.g.clazz-JavaBean,Map, and basic type e.g.action- QueryStructureAction
-
exec
<T extends Any> IQueryStructureResolver.PreparedSql<T> exec(Array<out String> sqlArr, Array<out Array<out Object>> paramsArr, Class<T> clazz)
使用多条语句和参数执行更新,创建,删除等非select语句
- Parameters:
sqlArr- 多条或单条SQL语句paramsArr- sqlArr 的长度为1时,params的长度任意。代表同一语句包含多参数 sqlArr 的长度不为1时,params的长度必须和 sqlArr的长度相等。clazz- 指定返回结果的类型,支持 List<Integer> Integer[] Int Boolean(不准确)
-
-
-
-