类 Db

  • 所有已实现的接口:
    Cloneable

    public class Db
    extends DbBase
    implements Cloneable

    SQL优化型数据库操作

    Created by sunJinChuan on 2016/6/6
    从以下版本开始:
    0.0.1
    • 构造器详细资料

      • Db

        public Db​(org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate namedParameterJdbcTemplate)
      • Db

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

      • clone

        public Db clone()
        克隆Db

        适用于需要复制原有Db配置,并创建新的Db对象以进行修改配置等场景。

        如:需要对操作的某个DAO单独配置 #setEnableDeleteQueryFilter(boolean) 属性

        覆盖:
        clone 在类中 Object
      • 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

        @Transactional
        public void insertBatch​(String tableName,
                                com.alibaba.fastjson.JSONObject[] paramJsons)
        向表中批量插入数据,主键默认为id时使用。
        参数:
        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
        public void delete​(String tableName,
                           Long id)
        删除
        参数:
        tableName - 表名
        id - 主键id
      • deleteSafe

        public void deleteSafe​(String tableName,
                               Long id)
        删除-安全的

        数据删除前会先进行条数确认

        参数:
        tableName - 表名
        id - 主键id
      • delete

        @Transactional
        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 - 条件数组
      • deleteBatch2

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

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

        示例:DELETE FROM table WHERE id = :id

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

        @Transactional
        public void deleteLogic​(String tableName,
                                Long id)
        删除-逻辑的

        数据非真实删除,而是更改 "delete_time" 字段值为 true,代表数据已删除

        参数:
        tableName - 表名
        id - 主键id
      • deleteLogic

        @Transactional
        public long deleteLogic​(String tableName,
                                com.alibaba.fastjson.JSONObject paramJson)
        删除-逻辑的

        数据非真实删除,而是更改 "delete_time" 字段值为 true,代表数据已删除

        参数:
        tableName - 表名
        paramJson - 条件
        返回:
        删除所影响的行数
      • deleteBatchLogic

        @Transactional
        public void deleteBatchLogic​(String tableName,
                                     com.alibaba.fastjson.JSONObject[] paramJsons)
        删除-批量-逻辑的

        数据非真实删除,而是更改 "delete_time" 字段值为 true,代表数据已删除

        一组条件对应一条数据,并且每组条件都采用相同的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语句以创建预编译执行SQL和绑定更新参数
        参数:
        sql - 要执行的更新SQL
        paramSource - 更新所用到的参数:MapSqlParameterSource,BeanPropertySqlParameterSource
        返回:
        自动生成的键(可能由JDBC insert语句返回)。
      • update

        @Transactional
        public Long update​(String sql,
                           org.springframework.jdbc.core.namedparam.SqlParameterSource paramSource)
        更新或插入一条数据,主键默认为id时使用。
        参数:
        sql - 更新或插入SQL
        paramSource - 更新所用到的参数:MapSqlParameterSource,BeanPropertySqlParameterSource
        返回:
        更新的主键id值
      • update

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

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

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

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

        @Transactional
        public int[] updateBatch​(String sql,
                                 com.alibaba.fastjson.JSONObject[] paramJsons)
        同 NamedParameterJdbcTemplate.batchUpdate(String, Map[])
        指定SQL语句以创建预编译执行SQL和绑定更新参数
        参数:
        sql - 要执行的更新SQL
        paramJsons - 更新所用到的参数数组
        返回:
        一个数组,其中包含受批处理中每个更新影响的行数
      • 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 - 更新类型 DbUpdateEnum
        expectedValue - 更新所影响的行数预期值
        dBExpectedEnum - 预期值确认方式
      • updateById

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

        根据表中主键ID进行更新

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

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

        根据表中主键ID进行更新

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

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

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

        参数:
        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
      • updateSort

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

        更新-排序


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

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

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

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

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

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

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。

        类型参数:
        T - 普通类型泛型
        参数:
        sql - 要执行的SQL查询
        paramJson - 要绑定到查询的参数映射
        mappedClass - 结果对象期望匹配的普通类型
        返回:
        所需普通类型的结果对象(如:Long, String, Boolean)或null
      • queryForJson

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

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

        public <T> T queryForObject​(String sql,
                                    com.alibaba.fastjson.JSONObject paramJson,
                                    Class<T> mappedClass)

        同 NamedParameterJdbcTemplate.queryForObject(String, Map, org.springframework.jdbc.core.RowMapper)

        注:RowMapper 的实现为 BeanPropertyRowMapper

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果映射应该是一个单行查询否则结果为null。

        类型参数:
        T - JavaBean的泛型
        参数:
        sql - 要执行的SQL查询
        paramJson - 要绑定到查询的参数映射
        mappedClass - POJO映射类
        返回:
        POJO对象
      • queryForRowSet

        public org.springframework.jdbc.support.rowset.SqlRowSet queryForRowSet​(String sql,
                                                                                com.alibaba.fastjson.JSONObject paramJson)
        同 NamedParameterJdbcTemplate.queryForRowSet(String, Map)

        指定SQL语句以创建预编译执行SQL和绑定查询参数,结果集可用于方便的获取各种类型的数据。

        参数:
        sql - 要执行的SQL查询
        paramJson - 要绑定到查询的参数映射
        返回:
        结果集可用于方便的获取各种类型的数据
      • queryForList

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

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

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

        public boolean isDataSize​(String tableName,
                                  com.alibaba.fastjson.JSONObject paramJson)
        是否有数据
        参数:
        tableName - 表名
        paramJson - 查询参数
        返回:
        是否有数据
      • getMetaData

        public org.springframework.jdbc.support.rowset.SqlRowSetMetaData getMetaData​(String tableName)
        获得表的元数据

        检索元数据,即此行集合的列的数字、类型和属性。

        参数:
        tableName -
        返回:
      • getById

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

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

        public com.alibaba.fastjson.JSONObject getByBusinessUk​(String tableName,
                                                               Object businessUkValue)
        通过表业务键查询

        默认业务键为key

        业务键值推荐使用UUID5

        参数:
        tableName - 表名
        businessUkValue - 业务键的唯一值
        返回:
        JSON数据
      • getByBusinessUk

        public <T> T getByBusinessUk​(String tableName,
                                     Object businessUkValue,
                                     Class<T> mappedClass)
        通过表业务键查询

        默认业务键为key

        业务键值推荐使用UUID5

        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        businessUkValue - 业务键的唯一值
        mappedClass - 映射类
        返回:
        POJO对象
      • get

        public com.alibaba.fastjson.JSONObject get​(String tableName,
                                                   com.alibaba.fastjson.JSONObject paramJson)
        绝对条件查询
        参数:
        tableName - 表名
        paramJson - 查询参数
        返回:
        JSON数据
      • get

        public <T> T get​(String tableName,
                         com.alibaba.fastjson.JSONObject paramJson,
                         Class<T> mappedClass)
        绝对条件查询
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        paramJson - 查询参数
        mappedClass - 映射类
        返回:
        POJO对象
      • 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,
                                Class<T> mappedClass,
                                SortEnum sortEnum)
        绝对条件查询
        类型参数:
        T - 泛型
        参数:
        tableName - 表名
        paramJson - 查询参数
        mappedClass - 映射类
        sortEnum - 排序方式
        返回:
        列表数据
      • 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 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> PageTVO<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 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

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

        public <T> PageTVO<T> page​(String tableName,
                                   PageIPO pageIPO,
                                   Class<T> mappedClass,
                                   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

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

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

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

        public PageVO 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> PageTVO<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 - 分页查询参数 PageIPO
        mappedClass - 映射类
        返回:
        count(总数),data(分页列表数据)
      • pageBeforeAndAfter

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

        public <T> T jdbcQueryObj​(String sql,
                                  Class<T> requiredType,
                                  @Nullable
                                  Object... args)
        执行以 '?' 作为参数占位符的SQL语句进行预期对象查询

        查询预期为单行/单列查询

        返回的结果将直接映射到相应的对象类型

        类型参数:
        T - SQL语句中SELECT参数列的类型
        参数:
        sql - SQL语句中可以包含一个或多个 '?' 参数占位符
        requiredType - 结果对象期望匹配的类型
        args - 查询参数,有序的对应SQL语句中的 '?' 参数占位符
        返回:
        所需普通类型的结果对象(如:Long, String, Boolean)或null
      • jdbcQueryLong

        public Long jdbcQueryLong​(String sql,
                                  @Nullable
                                  Object... args)
      • jdbcQueryDouble

        public Double jdbcQueryDouble​(String sql,
                                      @Nullable
                                      Object... args)
      • jdbcQueryNumber

        public Number jdbcQueryNumber​(String sql,
                                      @Nullable
                                      Object... args)
      • jdbcQueryBoolean

        public Long jdbcQueryBoolean​(String sql,
                                     @Nullable
                                     Object... args)
      • jdbcQueryDate

        public Date jdbcQueryDate​(String sql,
                                  @Nullable
                                  Object... args)
      • jdbcQueryForJson

        public com.alibaba.fastjson.JSONObject jdbcQueryForJson​(String sql,
                                                                @Nullable
                                                                Object... args)
        JdbcTemplate.queryForMap(String, Object...) 的安全查询方式

        执行以 '?' 作为参数占位符的SQL语句进行单行查询

        查询预期应该是一个单行查询否则结果为null。

        参数:
        sql - SQL语句中可以包含一个或多个 '?' 参数占位符
        args - 查询参数,有序的对应SQL语句中的 '?' 参数占位符
        返回:
        Json对象
      • jdbcQueryForList

        public List<com.alibaba.fastjson.JSONObject> jdbcQueryForList​(String sql,
                                                                      @Nullable
                                                                      Object... args)
        JdbcTemplate.queryForList(String, Object...)

        执行以 '?' 作为参数占位符的SQL语句进行列表查询

        查询预期为一个多行查询

        参数:
        sql - SQL语句中可以包含一个或多个 '?' 参数占位符
        args - 查询参数,有序的对应SQL语句中的 '?' 参数占位符
        返回:
        列表数据