Interface QSR

  • All Known Implementing Classes:
    JdbcQSR, QSRTmpl

    public interface QSR

    主要用于解析对象并执行或直接执行`SQL`

    推荐继承QSR模板以实现IQueryStructureResolver, 而不是直接实现该接口。
    该接口包含:
    1. 解析并执行`QueryStructure`接口
    2. 直接执行单条`SQL`接口
    3. 执行多条`SQL`查询语句接口
    4. 动态插入接口(根据数据库结构以及提供的`JavaBean`生成`INSERT`语句并执行)
    • Method Detail

      • resolve

        @NotNull
        <T> List<T> resolve​(@NotNull
                            QueryStructure queryStructure,
                            @NotNull
                            QueryPayload payload,
                            @NotNull
                            Class<T> clazz)
        将QueryStructure解析至SQL并执行
        Parameters:
        queryStructure - [QueryStructure]
        clazz - QSR模版支持`JavaBean`, `Map`, 以及`Long`, `String`, `Boolean`等基本类型。另外,默认使用的JdbcQSR(为QSR的子类)还额外支持`IResultSetWalker` insert时为对象的类型
        Returns:
        clazz为基本类型时,可能返回List<T?> 当动作为insert时,返回值为List<ID>
      • resolve

        @NotNull
        <T> List<T> resolve​(@NotNull
                            HashMapStore configStore,
                            @NotNull
                            QueryStructureAction action,
                            @NotNull
                            String sql,
                            @NotNull
                            Object[] params,
                            @NotNull
                            Class<T> clazz)
        执行一个SQL语句
        Parameters:
        sql - 单条sql语句 e.g. SELECT * FROM user WHERE user.id = ?
        params - 参数数组 e.g. [1]
        clazz - `JavaBean`, `Map`, and basic type e.g. `Long`, `String`, `Boolean` etc. for select by default; [Int] for update
        action - [QueryStructureAction]
        Returns:
        clazz为基本类型时,可能返回List<T?>
      • insert

        @NotNull
        <ID,​V,​M extends Map<String,​V>> List<ID> insert​(@NotNull
                                                                         HashMapStore configStore,
                                                                         @NotNull
                                                                         Collection<M> objs,
                                                                         @NotNull
                                                                         String table,
                                                                         @Nullable
                                                                         Class<ID> idColumnClazz)
        动态插入 通过 objs 配合数据库表名,动态生成sql语句,并执行
        Parameters:
        objs - 需要插入的Map类型的集合
        table - 数据库表名
        idColumnClazz - 如需返回ID,指定ID的类型
      • insert

        @NotNull
        List<Object> insert​(@NotNull
                            QueryStructure queryStructure,
                            @NotNull
                            QueryPayload payload,
                            @NotNull
                            Class<?> clazz)
        将QueryStructure解析至SQL并执行(insert) insert方法和resolve方法的区别是 返回结果不一样
        Parameters:
        queryStructure - [QueryStructure]
        clazz - Class<JavaBean>
        Returns:
        List<ID>
      • execBatch

        @NotNull
        <T> T execBatch​(@NotNull
                        HashMapStore configStore,
                        @NotNull
                        List<SqlAndParams> sqlAndParamsList,
                        @NotNull
                        Class<T> clazz)
        使用多条语句和参数执行更新,创建,删除等非select语句
        Parameters:
        sqlAndParamsList - 多对sql and params
        clazz - 指定返回结果的类型,支持
      • List 代表最后一条语句的返回结果
      • Int 总更新条数
      • Boolean 永远返回true