/** * Sets the single arg as params. */ default Query<T> param(Object arg) { return params(new Object[]{arg}); }
/** * Sets a {@link ArrayParams} for jdbc placeholders in this query. */ default Query<T> params(Object[] args) { return params(new ArrayParams(args)); }
@Override public Query<Record> createSqlQuery(String sql, Object... args) { return createSqlQuery(sql).params(args); }
@Override public Query<Record> createQuery(Map<String, Object> params) { return dao().createQuery(cmd).params(params); }
@Override public <T> Query<T> createQuery(Class<T> resultClass, Object[] args) { return dao().createQuery(resultClass, cmd).params(args); }
@Override public <T> Query<T> createQuery(Class<T> resultClass, Map<String, Object> params) { return dao().createQuery(resultClass, cmd).params(params); }
@Override public <T> Query<T> createQuery(Class<T> resultClass, Params params) { return dao().createQuery(resultClass, cmd).params(params); }
@Override public Query<Record> createQuery(Params params) { return dao().createQuery(cmd).params(params); }
@Override public Query<Record> createQuery(Object[] args) { return dao().createQuery(cmd).params(args); }
/** * Sets all properties in the given pojo bean as query parameters. */ Query<T> params(@Nullable DynaBean bean);
public Query<Record> createQuery(String sql, Map<String, Object> params) { Query<Record> query; if(sql.startsWith("@")) { String key = sql.substring(1); MetaSql sqlDef = sqls.get(key); if(null == sqlDef) { sqlDef = api.getMeta().getSql(key); } if(null != sqlDef) { //todo: cache the sql command. query = dao.createSqlQuery(Record.class, sqlDef.getScript()); }else { query = dao.createNamedQuery(key, Record.class); } }else { query = dao.createSqlQuery(Record.class, sql); } if(null != params) { query.params(params); } return query; }
@Override public Object apply(ActionParams params) { Map<String,Object> map = params.toMap(); Object result; if(command.getMetadata().isSelect()) { //todo: page query, total count Query query = dao.createQuery(command).params(map); if(null != returnType) { if(returnType.isSimpleType()) { result = Converts.convert(query.scalarValueOrNull(), returnType.asSimpleType().getJavaType()); }else if(returnType.isCollectionType() && returnType.asCollectionType().getElementType().isSimpleType()) { result = query.scalars().list(returnType.asCollectionType().getElementType().asSimpleType().getJavaType()); }else { result = query.list(); } }else { result = query.list(); } }else{ //todo: the return type must be simple type result = dao.executeUpdate(command, map); if(null != returnType) { result = Converts.convert(result, returnType.asSimpleType().getJavaType()); } } return ApiResponse.of(result); }