当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

JdbcQuery

JDBC封装包
授权协议 GPL
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 皇甫高阳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

JdbcQuery是一个对JDBC操作进行封装,使得在JAVA中执行复杂的SQL语句和存储过程变得像hibernate一样的简单,并能方便的将结果集以List、Map、Array的形式返回。

1. 调用存储过程示例:

String strSql = "{call callcenter_pack.Get_TaskCaseCount(:P_UserID,:P_ErrorInfo,:P_OutData)}";
JdbcQuery query = JdbcUtils.createNativeQuery(super.getConnection(), strSql);

query.setParameter("P_UserID", 5);
query.setOutParameter("P_ErrorInfo", OracleTypes.VARCHAR);      
query.setOutParameter("P_OutData", OracleTypes.CURSOR);
query.excuteProcedure();

//params: P_UserID、 P_ErrorInfo、 P_OutData.
//P_ErrorInfo 是一个输出参数, 用于返回存储过程中的错误信息
//P_OutData 是一个游标
//可以方便的获取一个List类型的结果
String strError = query.getString("P_ErrorInfo");
List<TaskBarCounter> dataList = query.getResultList("P_OutData",TaskBarCounter.class);
query.closeCallableStatement();

2. 调用SQL语句示例:

public Result findCollect(final QueryMap qMap) {

    final StringBuilder sb = new StringBuilder();
    StringBuilder sbWhere = new StringBuilder();

    // 汇总查询所需的列
    sb.append("select c.store_id, s.name,SUM(c.total_recharge) as total_recharge,");
    sb.append("SUM(c.total_payment) as total_payment,");
    sb.append("SUM(c.total_reversal) as total_reversal ");

    // 查询条件
    sbWhere.append(" from collect c inner join store s on c.store_id = s.id ");
    sbWhere.append(" where c.created >= :start ");
    sbWhere.append(" and c.created <= :end "); 
    sbWhere.append(" and s.parent_id = :parentId ");
    sbWhere.append(" and s.name like :storeName");
    sbWhere.append(" GROUP BY c.store_id,s.name ");

    // 查询数量
    final String countSQL = "select count(c.id)" + sbWhere.toString();

    // 分页
    sb.append(sbWhere).append("limit :pageStart,:pageSize");

    // QueryMap 是一个功能强大的HashMap, 提供了各种类型的转换, 
    // 例如: String 转 Integer、String 赚 Date 等等.
    qMap.convertsInt("pageIndex", "pageSize");

    // 计算分页参数: limit :pageStart,:pageSize
    qMap.setProperty("pageStart", qMap.getPageIndex()*qMap.getPageSize());

    // 设置参数parentId 例如SQL: and s.parent_id = :parentId
    qMap.setProperty("parentId", 5); 

    // getLikeValue可以格式化为 Like形式,例如: test => '%test%'
    qMap.setProperty("storeName", qMap.getLikeValue("storeName")); 

    final Result result = new Result();

    // 获取hibernate数据源连接,基类中获取,通过super.getSession().connection
    // 设置方法的参数:数据库连接,SQL语句,参数
    JdbcQuery query = JdbcUtils.createNativeQuery(super.getSession().connection, countSQL, qMap);

    // 获取数量
    int count = query.getCount();

    // 设置方法的参数:数据库连接,SQL语句,参数
    JdbcQuery querys = JdbcUtils.createNativeQuery(super.getSession().connection, sb.toString(), qMap);

    // 获取结果
    List list = querys.getResultList();

    // 将结果存入result中返回
    result.setTotal(count);
    result.setData(list);

    Log.i("result", result);

    return result;
}


//===========================================================================================   
//============= Hibernate4.x 获取数据库连接方式 begin ============================================

    super.getCurrentSession().doWork(new Work() {  
        public void execute(Connection connection) { 
            // 获取hibernate数据源连接:
            // 设置方法的参数:数据库连接,SQL语句,参数
            JdbcQuery query = JdbcUtils.createNativeQuery(connection, countSQL, qMap);

            // 获取数量
            int count = query.getCount();

            //设置方法的参数:数据库连接,SQL语句,参数
            JdbcQuery querys = JdbcUtils.createNativeQuery(connection, sb.toString(), qMap);
            // 获取结果
List list = querys.getResultList();

            // 将结果存入result中返回
            result.setTotal(count);
            result.setData(list);

            Log.i("result", result);
        }
    });
//============= Hibernate4.x 获取数据库连接方式 end ============================================

    return result;
}
  • 1.实体类实现RowMapper接口,并重写mapRow方法 import org.springframework.jdbc.core.RowMapper;//倒入包 import java.sql.ResultSet; import java.sql.SQLException; public class tbUser implements RowMapper { private lon

  • 在Spark配置JDBC连接关系型数据库时,可调优的参数比较多,但往往搜索时不好查,其实Spark提供了一个JDBCOptions类,配置了JDBC可配置的信息,如下: object JDBCOptions { private val curId = new java.util.concurrent.atomic.AtomicLong(0L) private val jdbcOptionN

  • public static List<Emp> queryColor() { // TODO Auto-generated method stub List<Emp> table =new ArrayList<Emp>(); Connection con=null; Statement sta=null; ResultSet re=null; String sql="select * from e

  • JDBC中添加数据成功后,如何返回主键id // 添加成功后,获取主键值 @Test public void test02() throws Exception { // 加载驱动器类 Class.forName("com.mysql.jdbc.Driver"); // 创建连接对象 // "jdbc:mysql:///test" String url = "jdbc

  •   [2018-02-26T20:50:05,305][WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::JavaLang::OutOfMemoryError: Java heap space>} [2018-02-26T

  • 最近JSP作业使用JDBC连接MySQL数据库,将表单提交的数据存入本地MySQL数据库,写好了JDBCUtils类的增删改差方法后,程序运行后发现数据一直无法插入数据库,数据库插入代码如下: public class JdbcUtils { // 数据库用户名 private static final String USERNAME = "root"; // 数据库密码 private

  •     我们有时候需要控制SQL查询的最大耗时,比如一个“执行时长”的SQL在指定时间内如果没有执行完毕,我们需要“取消”此SQL,我们知道在JDBC中Statement类可以通过setQueryTimeout()来实现此特性。     当设置query timeout之后,JDBC客户端发送请求,并等待直到执行完成或者超时,当超时后,客户端尝试cancel当前SQL,要求mysql server

  • spring jdbcTemplate query 返回值为null 今天使用以下方法从数据库中查询数据,返回列表 public List<BookBean> getBooks(){ String sql = "select * from books where inventory > 0 order by title"; List<BookBean> books

  • /** * 执行query查询 * 导包 * 加载驱动 * 获取连接 * 创建状态参数 * 执行ResultSet rs = executeQuery(String sql); Set<Map<String,Object>> * if(rs.next()){ * rs.getXXX(列的序号int--从开始) * rs.getXXX("列

  • 使用JdbcTemplate的queryForList方法,返回特别慢,40多万结果集耗时超过6分钟。双核CPU,占用率始终在50%,内存逐渐增长至2G左右。 进行debug跟进去看,看到jdbcTemplate调用jdbc返回ResultSet只用了30秒左右,之后就一直耗在extractData方法里。该方法是用默认的RowMapper,先取得MetaData然后根据这个去生成Map。 对比方

 相关资料
  • 6.6. 封装 一个对象的变量或者方法如果对调用方是不可见的话,一般就被定义为“封装”。封装有时候也被叫做信息隐藏,同时也是面向对象编程最关键的一个方面。 Go语言只有一种控制可见性的手段:大写首字母的标识符会从定义它们的包中被导出,小写字母的则不会。这种限制包内成员的方式同样适用于struct或者一个类型的方法。因而如果我们想要封装一个对象,我们必须将其定义为一个struct。 这也就是前面的小

  • prototype对象 构造函数的缺点 prototype属性的作用 原型链 constructor属性 Object.getPrototypeOf方法 Object.create方法 isPrototypeOf方法 prototype对象 构造函数的缺点 JavaScript通过构造函数生成新对象,因此构造函数可以视为对象的模板。实例对象的属性和方法,可以定义在构造函数内部。 function

  • 主要内容:1、public,2、private,3、protected,4、internal,5、protected internalC# 是一门面向对象编程语言,面向对象编程语言有三大特性,分别是封装、 继承和 多态。所谓封装就是将一个或多个项目(函数)集合在一个单元中,这个单元称之为类,我们可以根据需要通过访问权限修饰符来设定类中成员的范围和可见性。C# 中的访问权限修饰符有以下几种: public:公共的,所有对象都可以访问,但是需要引用命名空间; private:私有的,类的内部才可以访

  • 主要内容:Python 类如何进行封装?不光是 Python,大多数面向对象编程语言(诸如 C++、 Java 等)都具备 3 个典型特征,即封装、继承和多态。其中,本节重点讲解 Python 类的封装特性,继承和多态会在后续章节给大家做详细讲解。 简单的理解封装(Encapsulation),即在设计类时,刻意地将一些属性和方法隐藏在类的内部,这样在使用此类时,将无法直接以“类对象.属性名”(或者“类对象.方法名(参数)”)的形式调用

  • 我实现了一个名为mobile eCall的类。我从这个类中创建了几个对象,并用来自XML的值填充该对象的String变量,该XML具有针对特定人员的多个mobile eCall。我需要对这个人发出的所有呼叫进行分组和计数(例如,国内呼叫:11分钟;国际呼叫:15分钟;数据:20 MB) 因此,我在类中实现了几个公共方法来检查调用的类型,以返回true或false。在主类中,我调用了这些方法来检查它

  • Encapsulation被定义为“将一个或多个项目封装在物理或逻辑包中的过程”。 在面向对象的编程方法中,封装阻止了对实现细节的访问。 抽象和封装是面向对象编程中的相关特征。 抽象允许使相关信息可见,封装使程序员能够implement the desired level of abstraction 。 使用access specifiers实现封装。 access specifier定义类成员

  • 所有D程序都由以下两个基本要素组成 - Program statements (code) - 这是执行操作的程序的一部分,它们被称为函数。 Program data - 受程序功能影响的程序信息。 封装是一种面向对象的编程概念,它将数据和功能绑定在一起,将数据一起操作,并保护其免受外部干扰和误用。 数据封装导致了重要的OOP data hiding概念。 Data encapsulation是捆

  • Encapsulation是四个基本OOP概念之一。 其他三个是继承,多态和抽象。 Java中的封装是将数据(变量)和作用于数据(方法)的代码作为一个单元包装在一起的机制。 在封装中,类的变量将从其他类隐藏,并且只能通过其当前类的方法访问。 因此,它也被称为data hiding 。 在Java中实现封装 - 将类的变量声明为private。 提供公共setter和getter方法来修改和查看变量