Class P1_QueryOp

java.lang.Object
com.pugwoo.dbhelper.impl.part.P0_JdbcTemplateOp
com.pugwoo.dbhelper.impl.part.P1_QueryOp
All Implemented Interfaces:
DBHelper, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware
Direct Known Subclasses:
P2_InsertOp

public abstract class P1_QueryOp extends P0_JdbcTemplateOp
  • Constructor Details

    • P1_QueryOp

      public P1_QueryOp()
  • Method Details

    • getByKey

      public <T> T getByKey(Class<T> clazz, Object keyValue) throws NullKeyValueException, NotOnlyOneKeyColumnException
      Description copied from interface: DBHelper
      适合于只有一个Key的情况,多主键的情况请使用getOne
      【会自动处理软删除记录】
      Parameters:
      clazz - 查询的DO的类class
      keyValue - 查询的主键key值
      Returns:
      如果不存在则返回null
      Throws:
      NullKeyValueException
      NotOnlyOneKeyColumnException
    • getPage

      public <T> PageData<T> getPage(Class<T> clazz, int page, int pageSize, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询列表,postSql可以带查询条件
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      page - 从1开始
      pageSize - 每页查询个数
      postSql - 包含where关键字起的后续SQL语句,【不能】包含limit子句
      args - postSql中的参数列表
      Returns:
      返回的data不会是null
    • getPage

      public <T> PageData<T> getPage(Class<T> clazz, int page, int pageSize)
      Description copied from interface: DBHelper
      查询列表,没有查询条件
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      page - 从1开始
      pageSize - 每页查询个数
      Returns:
      返回的data不会是null
    • getCount

      public <T> long getCount(Class<T> clazz)
      Description copied from interface: DBHelper
      计算总数
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      Returns:
      总数
    • getCount

      public <T> long getCount(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      计算总数
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      postSql - 包含where关键字起的后续SQL语句
      args - postSql中的参数列表
      Returns:
      总数
    • getPageWithoutCount

      public <T> PageData<T> getPageWithoutCount(Class<T> clazz, int page, int pageSize, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询列表,postSql可以带查询条件;不查询总数
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      page - 从1开始
      pageSize - 每页查询个数
      postSql - 包含where关键字起的后续SQL语句
      Returns:
      返回的data不会是null
    • getPageWithoutCount

      public <T> PageData<T> getPageWithoutCount(Class<T> clazz, int page, int pageSize)
      Description copied from interface: DBHelper
      查询列表,没有查询条件;不查询总数
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      page - 从1开始
      pageSize - 每页查询个数
      Returns:
      返回的data不会是null
    • getAll

      public <T> List<T> getAll(Class<T> clazz)
      Description copied from interface: DBHelper
      查询列表,查询所有记录,如果数据量大请慎用
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      Returns:
      返回不会是null
    • getAllForStream

      public <T> Stream<T> getAllForStream(Class<T> clazz)
      Description copied from interface: DBHelper
      查询列表,查询所有记录,以Stream形式返回
      【特别注意】为了确保Stream方式查询有效,请确保jdbc的URL参数带上:useCursorFetch=true
      说明:可以通过setFetchSize方法修改流式获取数据时,每次获取的数据条数
      说明:Stream方式不会调用拦截器的afterQuery
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      Returns:
      返回不会是null【重要】请在获取完数据之后,close stream,不然会一直占用数据库连接。
    • getAllForStream

      public <T> Stream<T> getAllForStream(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询列表,查询所有记录,postSql指定查询where及order by limit等后续语句。以Stream形式返回
      【特别注意】为了确保Stream方式查询有效,请确保jdbc的URL参数带上:useCursorFetch=true
      说明:可以通过setFetchSize方法修改流式获取数据时,每次获取的数据条数
      说明:Stream方式不会调用拦截器的afterQuery
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      postSql - where及后续语句,可包含order by,group by,limit等语句
      Returns:
      返回不会是null【重要】请在获取完数据之后,close stream,不然会一直占用数据库连接。
    • getAll

      public <T> List<T> getAll(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询列表,查询所有记录,postSql指定查询where及order by limit等后续语句。
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      postSql - where及后续语句,可包含order by,group by,limit等语句
      Returns:
      返回不会是null
    • getAllKey

      public <T> List<T> getAllKey(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询列表,但只查询主键出来,postSql指定查询where及order by limit等后续语句。
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      postSql - where及后续语句,可包含order by,group by,limit等语句
      Returns:
      返回不会是null
    • getOne

      public <T> T getOne(Class<T> clazz)
      Description copied from interface: DBHelper
      查询一条记录,如果有多条,也只返回第一条。该方法适合于知道返回值只有一条记录的情况。
      【会自动处理软删除记录】
      Parameters:
      clazz - 【-支持@JoinTable-】
      Returns:
      如果不存在则返回null
    • getOne

      public <T> T getOne(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      查询一条记录,如果有多条,也只返回第一条。该方法适合于知道返回值只有一条记录的情况。
      【会自动处理软删除记录】
      Parameters:
      clazz - 查询的DO类【-支持@JoinTable-】
      postSql - where及后续语句,可包含order by,group by等语句
      args - postSql中的参数列表
      Returns:
      如果不存在则返回null
    • getRaw

      public <T> List<T> getRaw(Class<T> clazz, String sql, Map<String,?> args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句,支持通过namedParameter的方式传入参数,放到args里面
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL,参数用namedParameter的方式
      args - 自定义参数
    • getRawForStream

      public <T> Stream<T> getRawForStream(Class<T> clazz, String sql, Map<String,?> args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句,支持通过namedParameter的方式传入参数,放到args里面,以流Stream的形式返回。
      【特别注意】为了确保Stream方式查询有效,请确保jdbc的URL参数带上:useCursorFetch=true
      说明:可以通过setFetchSize方法修改流式获取数据时,每次获取的数据条数
      说明:Stream方式不会调用拦截器的afterQuery
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL
      args - 自定义参数
      Returns:
      【重要】请在获取完数据之后,close stream,不然会一直占用数据库连接。
    • getRawForStream

      public <T> Stream<T> getRawForStream(Class<T> clazz, String sql, Object... args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句,以流Stream的形式返回。
      【特别注意】为了确保Stream方式查询有效,请确保jdbc的URL参数带上:useCursorFetch=true
      说明:可以通过setFetchSize方法修改流式获取数据时,每次获取的数据条数
      说明:Stream方式不会调用拦截器的afterQuery
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL
      args - 自定义参数
      Returns:
      【重要】请在获取完数据之后,close stream,不然会一直占用数据库连接。
    • getRaw

      public <T> List<T> getRaw(Class<T> clazz, String sql, Object... args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL
      args - 自定义参数
    • getRawOne

      public <T> T getRawOne(Class<T> clazz, String sql, Object... args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句,只返回第一行 (特别说明,当有多行时也只返回第一行而不会失败或告警)
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL
      args - 自定义参数
    • getRawOne

      public <T> T getRawOne(Class<T> clazz, String sql, Map<String,?> args)
      Description copied from interface: DBHelper
      执行自行指定的SQL查询语句,支持通过namedParameter的方式传入参数,放到args里面,只返回第一行 (特别说明,当有多行时也只返回第一行而不会失败或告警)
      Parameters:
      clazz - 转换回来的DO类,也支持关联查询后处理;支持基本类型如Integer/Long/String等; 特别说明,对于Long和Integer,如果数据库返回的是null,由于ResultSet的getInt会返回0,所以这里也返回0
      sql - 自定义SQL,参数用namedParameter的方式
      args - 自定义参数
    • getByExample

      public <T> List<T> getByExample(T t, int limit)
      Description copied from interface: DBHelper
      根据给定的对象t查询跟t的非null值完全相等的记录。 因为很容易出现当t的全部属性全为null时,把整个表都查询出来的问题,特要求调用者给定limit参数,该参数为返回的最大条目数。
      Parameters:
      t - 提供查询条件的对象t
      limit - 限制查询的最大条目数
    • isExist

      public <T> boolean isExist(Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      是否出现至少一条记录
      Parameters:
      clazz - 查询的DO类
      postSql - 不能有limit子句
      args - postSql中的参数列表
      Returns:
      如果存在则返回true,否则返回false
    • isExistAtLeast

      public <T> boolean isExistAtLeast(int atLeastCounts, Class<T> clazz, String postSql, Object... args)
      Description copied from interface: DBHelper
      是否出现至少N条记录(含N条)
      Parameters:
      atLeastCounts - 至少有N条记录(isExist方法等级于atLeastCounts=1)
      clazz - 查询的DO类
      postSql - 不能有limit子句
      args - postSql中的参数列表
      Returns:
      如果存在则返回true,否则返回false
    • handleRelatedColumn

      public <T> void handleRelatedColumn(T t)
      Description copied from interface: DBHelper
      单独抽离出处理RelatedColumn的类,参数t不需要@Table的注解了
      Parameters:
      t - 需要处理RelatedColumn的对象
    • handleRelatedColumn

      public <T> void handleRelatedColumn(T t, String... relatedColumnProperties)
      Description copied from interface: DBHelper
      单独抽离出处理RelatedColumn的类,参数t不需要@Table的注解了
      Parameters:
      t - 需要处理RelatedColumn的对象
      relatedColumnProperties - 只处理制定的这些RelatedColumn注解的成员变量,这个的值是成员变量的名称
    • handleRelatedColumn

      public <T> void handleRelatedColumn(List<T> list)
      Description copied from interface: DBHelper
      单独抽离出处理RelatedColumn的类,参数list的元素不需要@Table的注解了。但要求list都同一class类型的对象。
      Parameters:
      list - 需要处理RelatedColumn的对象列表
    • handleRelatedColumn

      public <T> void handleRelatedColumn(List<T> list, String... relatedColumnProperties)
      Description copied from interface: DBHelper
      单独抽离出处理RelatedColumn的类,参数list的元素不需要@Table的注解了。但要求list都同一class类型的对象。
      Parameters:
      list - 需要处理RelatedColumn的对象列表
      relatedColumnProperties - 只处理制定的这些RelatedColumn注解的成员变量,这个的值是成员变量的名称