类 DB


  • public class DB
    extends java.lang.Object

    SQL优化型数据库操作

    Created by sunJinChuan on 2016/6/6
    从以下版本开始:
    0.0.1
    • 字段概要

      字段 
      修饰符和类型 字段 说明
      protected org.springframework.jdbc.core.JdbcTemplate jdbcTemplate  
      protected org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate namedParameterJdbcTemplate  
    • 构造器概要

      构造器 
      构造器 说明
      DB​(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate namedParameterJdbcTemplate)  
    • 方法概要

      所有方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      long delete​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson)
      删除
      void delete​(java.lang.String tableName, java.lang.Long id)
      删除
      void deleteBatch​(java.lang.String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
      删除-批量
      int[] deleteBatch2​(java.lang.String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
      同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
      java.lang.Long insert​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson)
      向表中插入一条数据,主键默认为id时使用。
      void insertBatch​(java.lang.String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
      向表中批量插入数据,主键默认为id时使用。
      java.lang.Long insertOrUpdate​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String[] conditions, DBUpdateEnum dBUpdateEnum)
      插入或更新
      java.lang.Long insertWithSortIdxAutoIncrement​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String... uniqueKeys)
      向表中插入一条数据,并自动递增 sort_idx
      boolean isDataSize​(long dataSize)
      是否有数据
      boolean isUpdateAndExpectedEqual​(long updateRowsNumber, int expectedValue)
      判断更新所影响的行数是否 等于 预期值
      boolean isUpdateAndExpectedGreaterThanEqual​(long updateRowsNumber, int expectedValue)
      判断更新所影响的行数是否 大于等于 预期值
      PageVO page​(java.lang.String tableName, PageIPO pageIPO)
      单表分页查询

      PageVO page​(java.lang.String tableName, PageIPO pageIPO, DBSortEnum dBSortEnum)
      单表分页查询

      <T> PageTVO<T> page​(java.lang.String tableName, PageIPO pageIPO, java.lang.Class<T> mappedClass)
      单表分页查询

      <T> PageTVO<T> page​(java.lang.String tableName, PageIPO pageIPO, java.lang.Class<T> mappedClass, DBSortEnum dBSortEnum)
      单表分页查询

      PageBeforeAndAfterVO pageBeforeAndAfter​(java.lang.String querySql, PageIPO pageIPO, java.lang.Long equalsId)
      根据相同的列表条件,获得上一条与下一条数据
      PageVO pageSql​(java.lang.String querySql, PageIPO pageIPO)
      复杂SQL分页查询

      <T> PageTVO<T> pageSql​(java.lang.String querySql, PageIPO pageIPO, java.lang.Class<T> mappedClass)
      复杂SQL分页查询

      PageVO pageSql​(java.lang.String countSql, java.lang.String querySql, PageIPO pageIPO)
      复杂SQL分页查询

      <T> PageTVO<T> pageSql​(java.lang.String countSql, java.lang.String querySql, PageIPO pageIPO, java.lang.Class<T> mappedClass)
      复杂SQL分页查询

      PageVO pageWhere​(java.lang.String tableName, java.lang.String whereSql, PageIPO pageIPO)
      单表分页查询

      <T> PageTVO<T> pageWhere​(java.lang.String tableName, java.lang.String whereSql, PageIPO pageIPO, java.lang.Class<T> mappedClass)
      单表分页查询

      java.lang.String paramToWhereSql​(com.alibaba.fastjson.JSONObject paramJson)
      绝对条件查询参数whereSql化
      protected java.lang.String paramToWhereSql​(com.alibaba.fastjson.JSONObject paramJson, java.lang.String... conditions)
      绝对条件查询参数whereSql化
      protected void paramValidate​(java.lang.String tableName)
      参数验证
      protected void paramValidate​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson)
      参数验证
      protected void paramValidate​(java.lang.String tableName, com.alibaba.fastjson.JSONObject[] paramJsons)
      参数验证
      protected void paramValidate​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String[] conditions)
      参数验证
      protected void paramValidate​(java.lang.String tableName, java.lang.Long id)
      参数验证
      protected void paramValidate​(java.lang.String tableName, java.lang.Long id, java.lang.String[] fieldName)
      参数验证
      protected void paramValidate​(java.lang.String tableName, java.lang.String whereSql)
      参数验证
      java.util.List<com.alibaba.fastjson.JSONObject> query​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson)
      绝对条件查询
      java.util.List<com.alibaba.fastjson.JSONObject> query​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, DBSortEnum dBSortEnum)
      绝对条件查询
      <T> java.util.List<T> query​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.Class<T> mappedClass)
      绝对条件查询
      <T> java.util.List<T> query​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.Class<T> mappedClass, DBSortEnum dBSortEnum)
      绝对条件查询
      java.util.List<com.alibaba.fastjson.JSONObject> queryAll​(java.lang.String tableName)
      查询表中所有数据
      <T> java.util.List<T> queryAll​(java.lang.String tableName, java.lang.Class<T> mappedClass)
      查询表中所有数据
      com.alibaba.fastjson.JSONObject queryById​(java.lang.String tableName, long id)
      通过表主键ID查询
      <T> T queryById​(java.lang.String tableName, java.lang.Long id, java.lang.Class<T> mappedClass)
      通过表ID查询(字段名=id,一般为表自增ID-主键)
      com.alibaba.fastjson.JSONObject queryById​(java.lang.String tableName, java.lang.Long id, java.lang.String... fieldName)
      通过表主键ID动态查询字段
      com.alibaba.fastjson.JSONObject queryForJson​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson)
      NamedParameterJdbcTemplate.queryForMap(String, Map) 的安全查询方式

      指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。
      java.util.List<com.alibaba.fastjson.JSONObject> queryForList​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson)
      NamedParameterJdbcTemplate.queryForList(String, Map)

      指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个多行查询。
      <T> java.util.List<T> queryForList​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson, java.lang.Class<T> mappedClass)
      同 NamedParameterJdbcTemplate.queryForList(String, Map, Class)
      指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个多行查询。
      <T> T queryForObject​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson, java.lang.Class<T> mappedClass)
      同NamedParameterJdbcTemplate.queryForObject(String, Map, Class)

      指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。
      com.alibaba.fastjson.JSONObject resultToJson​(java.util.List<com.alibaba.fastjson.JSONObject> list)
      同 DBQuery.queryForJson(String, JSONObject) 的安全查询结果获取
      <T> T resultToObject​(java.util.List<T> list)
      同 DBQuery.queryForObject(String, JSONObject, Class) 的安全查询结果获取
      long update​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson)
      同 NamedParameterJdbcTemplate.update(String, Map)
      指定SQL语句以创建预编译执行SQL和绑定更新参数
      void update​(java.lang.String sql, com.alibaba.fastjson.JSONObject paramJson, int expectedValue, DBExpectedValueModeEnum dBExpectedValueModeEnum)
      同 NamedParameterJdbcTemplate.update(String, Map)
      指定SQL语句以创建预编译执行SQL和绑定更新参数
      java.lang.Long update​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String[] conditions)
      绝对条件更新优化SQL

      相对条件更新优化SQL可参照如下编写:
      UPDATE table
      SET paramNumber1 = paramNumber1 - 1, ...
      WHERE
      id = :id
      AND
      paramNumber1 > 0
      AND ...
      java.lang.Long update​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String[] conditions, DBUpdateEnum dBUpdateEnum)
      绝对条件更新优化SQL

      void update​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, java.lang.String[] conditions, DBUpdateEnum dBUpdateEnum, int expectedValue, DBExpectedValueModeEnum dBExpectedValueModeEnum)
      绝对条件更新优化SQL

      void updateAndExpectedEqual​(long updateRowsNumber, int expectedValue)
      判断更新所影响的行数是否 等于 预期值
      void updateAndExpectedGreaterThanEqual​(long updateRowsNumber, int expectedValue)
      判断更新所影响的行数是否 大于等于 预期值
      int[] updateBatch​(java.lang.String sql, com.alibaba.fastjson.JSONObject[] paramJsons)
      同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
      指定SQL语句以创建预编译执行SQL和绑定更新参数
      void updateBatch​(java.lang.String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, java.lang.String[] conditions, DBUpdateEnum dBUpdateEnum)
      更新-批量
      void updateBatchAndExpectedEqual​(int[] updateRowsNumberArray, int expectedValue)
      确认批量更新每组参数所影响的行数,是否 全部都等于 同一个预期值
      void updateById​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson)
      更新-ById
      void updateById​(java.lang.String tableName, com.alibaba.fastjson.JSONObject[] paramJsons, DBUpdateEnum dBUpdateEnum)
      批量更新-ById
      void updateById​(java.lang.String tableName, com.alibaba.fastjson.JSONObject paramJson, DBUpdateEnum dBUpdateEnum)
      更新-ById
      void updateSort​(java.lang.String tableName, java.lang.Long id, java.lang.Integer move, java.lang.String... uniqueKeys)
      更新-排序
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 字段详细资料

      • jdbcTemplate

        protected org.springframework.jdbc.core.JdbcTemplate jdbcTemplate
      • namedParameterJdbcTemplate

        protected org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate namedParameterJdbcTemplate
    • 构造器详细资料

      • DB

        public DB​(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate,
                  org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate namedParameterJdbcTemplate)
    • 方法详细资料

      • insert

        @Transactional
        public java.lang.Long insert​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject paramJson)
        向表中插入一条数据,主键默认为id时使用。
        参数:
        tableName - 表名
        paramJson - 参数
        返回:
        返回主键值
      • insertWithSortIdxAutoIncrement

        @Transactional
        public java.lang.Long insertWithSortIdxAutoIncrement​(java.lang.String tableName,
                                                             com.alibaba.fastjson.JSONObject paramJson,
                                                             @Nullable
                                                             java.lang.String... uniqueKeys)

        向表中插入一条数据,并自动递增 sort_idx

        使用条件:
        1. id 默认为主键
        2. sort_idx 默认为排序字段
        参数:
        tableName - 表名
        paramJson - 插入数据
        uniqueKeys - 同sort_idx字段组合的唯一约束keys(表中不建议建立sort_idx字段的唯一约束,但可以建立普通索引,以便于提高查询性能),可选参数
        返回:
        返回主键值
      • insertBatch

        @Transactional
        public void insertBatch​(java.lang.String tableName,
                                com.alibaba.fastjson.JSONObject[] paramJsons)
        向表中批量插入数据,主键默认为id时使用。
        参数:
        tableName - 表名
        paramJsons - 参数
      • insertOrUpdate

        @Transactional
        public java.lang.Long insertOrUpdate​(java.lang.String tableName,
                                             com.alibaba.fastjson.JSONObject paramJson,
                                             java.lang.String[] conditions,
                                             DBUpdateEnum dBUpdateEnum)

        插入或更新

        表中必须存在数据唯一性约束

        更新触发条件:此数据若存在唯一性约束则更新,否则便执行插入数据

        SQL示例:
        INSERT INTO table (param1, param2, ...)
        VALUES
        (:param1, :param2, ...)
        ON DUPLICATE KEY UPDATE
        condition = condition + :condition, ...

        参数:
        tableName - 表名
        paramJson - 插入或更新所用到的参数
        conditions - 更新条件(对应paramJson内的key值)
        dBUpdateEnum - 更新类型 DBUpdateEnum
        返回:
        受影响的行数
      • delete

        @Transactional
        public void delete​(java.lang.String tableName,
                           java.lang.Long id)
        删除
        参数:
        tableName - 表名
        id - 主键id
      • delete

        @Transactional
        public long delete​(java.lang.String tableName,
                           com.alibaba.fastjson.JSONObject paramJson)
        删除
        参数:
        tableName - 表名
        paramJson - 条件
        返回:
        删除所影响的行数
      • deleteBatch

        @Transactional
        public void deleteBatch​(java.lang.String tableName,
                                com.alibaba.fastjson.JSONObject[] paramJsons)
        删除-批量

        一组条件对应一条数据,并且每组条件都采用相同的key

        参数:
        tableName - 表名
        paramJsons - 条件数组
      • deleteBatch2

        @Transactional
        public int[] deleteBatch2​(java.lang.String sql,
                                  com.alibaba.fastjson.JSONObject[] paramJsons)
        同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])

        指定SQL语句以创建预编译执行SQL和绑定删除参数

        示例:DELETE FROM table WHERE id = :id

        参数:
        sql - 要执行的删除SQL
        paramJsons - 删除所用到的条件数组
        返回:
        一个数组,其中包含受批处理中每个更新影响的行数
      • update

        @Transactional
        public java.lang.Long update​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject paramJson,
                                     java.lang.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 java.lang.Long update​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject paramJson,
                                     java.lang.String[] conditions,
                                     DBUpdateEnum dBUpdateEnum)
        绝对条件更新优化SQL

        参数:
        tableName - 表名
        paramJson - 更新所用到的参数
        conditions - 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)
        dBUpdateEnum - 更新类型 DBUpdateEnum
        返回:
        受影响的行数
      • update

        @Transactional
        public void update​(java.lang.String tableName,
                           com.alibaba.fastjson.JSONObject paramJson,
                           java.lang.String[] conditions,
                           DBUpdateEnum dBUpdateEnum,
                           int expectedValue,
                           DBExpectedValueModeEnum dBExpectedValueModeEnum)
        绝对条件更新优化SQL

        参数:
        tableName - 表名
        paramJson - 更新所用到的参数
        conditions - 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)
        dBUpdateEnum - 更新类型 DBUpdateEnum
        expectedValue - 更新所影响的行数预期值
        dBExpectedValueModeEnum - 预期值确认方式
      • update

        @Transactional
        public long update​(java.lang.String sql,
                           com.alibaba.fastjson.JSONObject paramJson)
        同 NamedParameterJdbcTemplate.update(String, Map)
        指定SQL语句以创建预编译执行SQL和绑定更新参数
        参数:
        sql - 要执行的更新SQL
        paramJson - 更新所用到的参数
        返回:
        受影响的行数
      • update

        @Transactional
        public void update​(java.lang.String sql,
                           com.alibaba.fastjson.JSONObject paramJson,
                           int expectedValue,
                           DBExpectedValueModeEnum dBExpectedValueModeEnum)
        同 NamedParameterJdbcTemplate.update(String, Map)
        指定SQL语句以创建预编译执行SQL和绑定更新参数

        将会对更新所影响的行数进行预期判断,若结果不符合预期值:expectedValue,那么此处便会抛出一个 DBException

        参数:
        sql - 要执行的更新SQL
        paramJson - 更新所用到的参数
        expectedValue - 更新所影响的行数预期值
        dBExpectedValueModeEnum - 预期值确认方式
      • updateById

        @Transactional
        public void updateById​(java.lang.String tableName,
                               com.alibaba.fastjson.JSONObject paramJson)
        更新-ById

        根据表中主键ID进行更新

        参数:
        tableName - 表名
        paramJson - 更新所用到的参数(包含主键ID字段)
      • updateById

        @Transactional
        public void updateById​(java.lang.String tableName,
                               com.alibaba.fastjson.JSONObject paramJson,
                               DBUpdateEnum dBUpdateEnum)
        更新-ById

        根据表中主键ID进行更新

        参数:
        tableName - 表名
        paramJson - 更新所用到的参数(包含主键ID字段)
        dBUpdateEnum - 更新类型 DBUpdateEnum
      • updateById

        @Transactional
        public void updateById​(java.lang.String tableName,
                               com.alibaba.fastjson.JSONObject[] paramJsons,
                               DBUpdateEnum dBUpdateEnum)
        批量更新-ById

        根据表中主键ID进行批量更新

        参数:
        tableName - 表名
        paramJsons - 更新所用到的参数数组(包含主键ID字段)
        dBUpdateEnum - 更新类型 DBUpdateEnum
      • updateSort

        @Transactional
        public void updateSort​(java.lang.String tableName,
                               java.lang.Long id,
                               java.lang.Integer move,
                               @Nullable
                               java.lang.String... uniqueKeys)

        更新-排序


        使用限制:见 DBInsert.insertWithSortIdxAutoIncrement(String, JSONObject, String...)

        参数:
        tableName - 表名
        id - 主键ID
        move - sort_idx移动位数(值不可等于零,正整数表示:向后移动几位,负整数表示:向前移动几位)
        uniqueKeys - 同sort_idx字段组合的唯一约束keys(表中不建议建立sort_idx字段的唯一约束,但可以建立普通索引,以便于提高查询性能),可选参数
      • updateBatch

        @Transactional
        public void updateBatch​(java.lang.String tableName,
                                com.alibaba.fastjson.JSONObject[] paramJsons,
                                java.lang.String[] conditions,
                                DBUpdateEnum dBUpdateEnum)
        更新-批量

        一组条件对应一条数据,并且每组条件都采用相同的key

        参数:
        tableName - 表名
        paramJsons - 更新所用到的参数数组
        conditions - 作为更新条件的参数名,对应paramJson内的key(注意:作为条件的参数,将不会用于字段值的更新)
        dBUpdateEnum - 更新类型 DBUpdateEnum
      • updateBatch

        @Transactional
        public int[] updateBatch​(java.lang.String sql,
                                 com.alibaba.fastjson.JSONObject[] paramJsons)
        同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
        指定SQL语句以创建预编译执行SQL和绑定更新参数
        参数:
        sql - 要执行的更新SQL
        paramJsons - 更新所用到的参数数组
        返回:
        一个数组,其中包含受批处理中每个更新影响的行数
      • query

        public java.util.List<com.alibaba.fastjson.JSONObject> query​(java.lang.String tableName,
                                                                     com.alibaba.fastjson.JSONObject paramJson)
        绝对条件查询
        参数:
        tableName - 表名
        paramJson - 查询参数
        返回:
        列表数据
      • query

        public <T> java.util.List<T> query​(java.lang.String tableName,
                                           com.alibaba.fastjson.JSONObject paramJson,
                                           java.lang.Class<T> mappedClass)
        绝对条件查询
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        paramJson - 查询参数
        mappedClass - 映射类
        返回:
        列表数据
      • query

        public java.util.List<com.alibaba.fastjson.JSONObject> query​(java.lang.String tableName,
                                                                     com.alibaba.fastjson.JSONObject paramJson,
                                                                     DBSortEnum dBSortEnum)
        绝对条件查询
        参数:
        tableName - 表名
        paramJson - 查询参数
        dBSortEnum - 排序方式
        返回:
        列表数据
      • query

        public <T> java.util.List<T> query​(java.lang.String tableName,
                                           com.alibaba.fastjson.JSONObject paramJson,
                                           java.lang.Class<T> mappedClass,
                                           DBSortEnum dBSortEnum)
        绝对条件查询
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        paramJson - 查询参数
        mappedClass - 映射类
        dBSortEnum - 排序方式
        返回:
        列表数据
      • queryById

        public com.alibaba.fastjson.JSONObject queryById​(java.lang.String tableName,
                                                         long id)
        通过表主键ID查询
        参数:
        tableName - 表名
        id - 表自增ID
        返回:
        JSON数据
      • queryById

        public <T> T queryById​(java.lang.String tableName,
                               java.lang.Long id,
                               java.lang.Class<T> mappedClass)
        通过表ID查询(字段名=id,一般为表自增ID-主键)
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        id - 主键ID
        mappedClass - 映射类
        返回:
        POJO对象
      • queryById

        public com.alibaba.fastjson.JSONObject queryById​(java.lang.String tableName,
                                                         java.lang.Long id,
                                                         java.lang.String... fieldName)
        通过表主键ID动态查询字段
        参数:
        tableName - 表名
        id - 表自增ID
        fieldName - 字段名
        返回:
        JSON对象
      • queryAll

        public java.util.List<com.alibaba.fastjson.JSONObject> queryAll​(java.lang.String tableName)
        查询表中所有数据
        参数:
        tableName - 表名
        返回:
        列表数据
      • queryAll

        public <T> java.util.List<T> queryAll​(java.lang.String tableName,
                                              java.lang.Class<T> mappedClass)
        查询表中所有数据
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        mappedClass - 映射类
        返回:
        列表数据
      • queryForJson

        public com.alibaba.fastjson.JSONObject queryForJson​(java.lang.String sql,
                                                            com.alibaba.fastjson.JSONObject paramJson)
        NamedParameterJdbcTemplate.queryForMap(String, Map) 的安全查询方式

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。
        参数:
        sql - 要执行的SQL查询
        paramJson - 要绑定到查询的参数映射
        返回:
        JSON对象
      • queryForObject

        public <T> T queryForObject​(java.lang.String sql,
                                    com.alibaba.fastjson.JSONObject paramJson,
                                    java.lang.Class<T> mappedClass)
        同NamedParameterJdbcTemplate.queryForObject(String, Map, Class)

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。
        类型参数:
        T - 泛型
        参数:
        sql - 要执行的SQL查询
        paramJson - 要绑定到查询的参数映射
        mappedClass - 映射类
        返回:
        POJO对象
      • queryForList

        public java.util.List<com.alibaba.fastjson.JSONObject> queryForList​(java.lang.String sql,
                                                                            com.alibaba.fastjson.JSONObject paramJson)
        NamedParameterJdbcTemplate.queryForList(String, Map)

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个多行查询。
        参数:
        sql - 要执行的查询SQL
        paramJson - 要绑定到查询的参数映射
        返回:
        列表数据
      • queryForList

        public <T> java.util.List<T> queryForList​(java.lang.String sql,
                                                  com.alibaba.fastjson.JSONObject paramJson,
                                                  java.lang.Class<T> mappedClass)
        同 NamedParameterJdbcTemplate.queryForList(String, Map, Class)
        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个多行查询。
        类型参数:
        T - 泛型
        参数:
        sql - 要执行的查询SQL
        paramJson - 要绑定到查询的参数映射
        mappedClass - 映射类
        返回:
        列表数据
      • page

        public PageVO page​(java.lang.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> PageTVO<T> page​(java.lang.String tableName,
                                   PageIPO pageIPO,
                                   java.lang.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 page​(java.lang.String tableName,
                           PageIPO pageIPO,
                           DBSortEnum dBSortEnum)
        单表分页查询

        阿里最优SQL示例:

        SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 ORDER BY id LIMIT 100000,20 ) b where a.id=b.id

        参数:
        tableName - 表名
        pageIPO - 分页查询参数 PageIPO,所有的条件参数,都将以等于的形式进行SQL拼接
        dBSortEnum - 排序方式 DBSortEnum
        返回:
        count(总数),data(分页列表数据)
      • page

        public <T> PageTVO<T> page​(java.lang.String tableName,
                                   PageIPO pageIPO,
                                   java.lang.Class<T> mappedClass,
                                   DBSortEnum dBSortEnum)
        单表分页查询

        阿里最优SQL示例:

        SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 ORDER BY id LIMIT 100000,20 ) b where a.id=b.id

        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        pageIPO - 分页查询参数 PageIPO,所有的条件参数,都将以等于的形式进行SQL拼接
        mappedClass - 映射类
        dBSortEnum - 排序方式 DBSortEnum
        返回:
        count(总数),data(分页列表数据)
      • pageWhere

        public PageVO pageWhere​(java.lang.String tableName,
                                java.lang.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> PageTVO<T> pageWhere​(java.lang.String tableName,
                                        java.lang.String whereSql,
                                        PageIPO pageIPO,
                                        java.lang.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 - 分页查询参数 PageIPO
        mappedClass - 映射类
        返回:
        count(总数),data(分页列表数据)
      • pageSql

        public PageVO pageSql​(java.lang.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> PageTVO<T> pageSql​(java.lang.String querySql,
                                      PageIPO pageIPO,
                                      java.lang.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 - 分页查询参数 PageIPO
        mappedClass - 映射类
        返回:
        count(总数),data(分页列表数据)
      • pageSql

        public PageVO pageSql​(@Nullable
                              java.lang.String countSql,
                              java.lang.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> PageTVO<T> pageSql​(@Nullable
                                      java.lang.String countSql,
                                      java.lang.String querySql,
                                      PageIPO pageIPO,
                                      java.lang.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 - 分页查询参数 PageIPO
        mappedClass - 映射类
        返回:
        count(总数),data(分页列表数据)
      • pageBeforeAndAfter

        public PageBeforeAndAfterVO pageBeforeAndAfter​(java.lang.String querySql,
                                                       PageIPO pageIPO,
                                                       java.lang.Long equalsId)
        根据相同的列表条件,获得上一条与下一条数据
        参数:
        querySql - 用于查询数据的sql语句
        pageIPO - 分页查询参数 PageIPO
        equalsId - 做比较的条件ID(将与查询结果的主键ID做比较)
        返回:
        PageBeforeAndAfterVO
      • isDataSize

        public boolean isDataSize​(long dataSize)
        是否有数据
        参数:
        dataSize - 数据大小
        返回:
        是否 <= 0
      • isUpdateAndExpectedEqual

        public boolean isUpdateAndExpectedEqual​(long updateRowsNumber,
                                                int expectedValue)
        判断更新所影响的行数是否 等于 预期值

        若不是预期值,同时 updateRowsNumber > 0 那么将会抛出一个 DBException

        参数:
        updateRowsNumber - 更新所影响的行数
        expectedValue - 预期值
        返回:
        是否 等于 预期值
      • isUpdateAndExpectedGreaterThanEqual

        public boolean isUpdateAndExpectedGreaterThanEqual​(long updateRowsNumber,
                                                           int expectedValue)
        判断更新所影响的行数是否 大于等于 预期值

        若不是预期结果,同时 updateRowsNumber < expectedValue 那么将会抛出一个DBException

        参数:
        updateRowsNumber - 更新所影响的行数
        expectedValue - 预期值
        返回:
        是否 大于等于 预期值
      • updateAndExpectedEqual

        public void updateAndExpectedEqual​(long updateRowsNumber,
                                           int expectedValue)
        判断更新所影响的行数是否 等于 预期值

        若不是预期值,那么将会抛出一个DBException

        参数:
        updateRowsNumber - 更新所影响的行数
        expectedValue - 预期值
      • updateAndExpectedGreaterThanEqual

        public void updateAndExpectedGreaterThanEqual​(long updateRowsNumber,
                                                      int expectedValue)
        判断更新所影响的行数是否 大于等于 预期值

        若不是预期结果,那么将会抛出一个DBException

        参数:
        updateRowsNumber - 更新所影响的行数
        expectedValue - 预期值
      • updateBatchAndExpectedEqual

        public void updateBatchAndExpectedEqual​(int[] updateRowsNumberArray,
                                                int expectedValue)
        确认批量更新每组参数所影响的行数,是否 全部都等于 同一个预期值

        若不是预期值,那么将会抛出一个DBException

        参数:
        updateRowsNumberArray - 每组参数更新所影响的行数数组
        expectedValue - 预期值
      • resultToJson

        public com.alibaba.fastjson.JSONObject resultToJson​(java.util.List<com.alibaba.fastjson.JSONObject> list)
        同 DBQuery.queryForJson(String, JSONObject) 的安全查询结果获取
        参数:
        list - DBQuery.queryForList(String, JSONObject) 查询结果
        返回:
        JSON数据
      • resultToObject

        public <T> T resultToObject​(java.util.List<T> list)
        同 DBQuery.queryForObject(String, JSONObject, Class) 的安全查询结果获取
        类型参数:
        T - 泛型
        参数:
        list - DBQuery.queryForList(String, JSONObject, Class) 查询结果
        返回:
        POJO对象
      • paramToWhereSql

        protected java.lang.String paramToWhereSql​(com.alibaba.fastjson.JSONObject paramJson,
                                                   java.lang.String... conditions)
        绝对条件查询参数whereSql化

        已对 NULL 值进行特殊处理(IS NULL)

        已对 List 类型值进行特殊处理(IN (?, ?))

        结果示例:

         WHERE 1 = 1
        AND
        param1 = :param1
        AND
        param2 IS NULL :param2
        AND
        param3 IN :param3
        AND ...
        参数:
        paramJson - 参数
        conditions - where条件(对应paramJson key)
        返回:
        whereSql
      • paramToWhereSql

        public java.lang.String paramToWhereSql​(com.alibaba.fastjson.JSONObject paramJson)
        绝对条件查询参数whereSql化

        已对 NULL 值进行特殊处理(IS NULL)

        已对 List 类型值进行特殊处理(IN (?, ?))

        结果示例:

         WHERE 1 = 1
        AND
        param1 = :param1
        AND
        param2 IS NULL :param2
        AND
        param3 IN :param3
        AND ...
        参数:
        paramJson - 参数
        返回:
        whereSql
      • paramValidate

        protected void paramValidate​(java.lang.String tableName)
        参数验证
        参数:
        tableName - 表名
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     java.lang.String whereSql)
        参数验证
        参数:
        tableName - 表名
        whereSql - 条件sql
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     java.lang.Long id)
        参数验证
        参数:
        tableName - 表名
        id - 主键ID
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     java.lang.Long id,
                                     java.lang.String[] fieldName)
        参数验证
        参数:
        tableName - 表名
        id - 主键ID
        fieldName - 字段名称
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject paramJson)
        参数验证
        参数:
        tableName - 表名
        paramJson - 参数
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject[] paramJsons)
        参数验证
        参数:
        tableName - 表名
        paramJsons - 参数数组
      • paramValidate

        protected void paramValidate​(java.lang.String tableName,
                                     com.alibaba.fastjson.JSONObject paramJson,
                                     java.lang.String[] conditions)
        参数验证
        参数:
        tableName - 表名
        paramJson - 参数
        conditions - 条件(对应paramJson key)