JDBC实现分页查询,同时使用动态数据源
来源:互联网 发布:移动网络改成电信 编辑:程序博客网 时间:2024/05/17 03:16
方法是通过jdbc来实现分页的,这样做的目的是可以实现多数据库的情况下,都能使用的方法。
但是这个方法貌似会存在性能问题,因为结果集会全部数据查询出来...
但是这个方法貌似会存在性能问题,因为结果集会全部数据查询出来...
- public JSONObject query(JSONObject object, int pageIndex, int pageSize) {
- JSONObject result = new JSONObject();
- if(object == null || object.getBoolean("success") == false) {
- result.put("success", false);
- if(object == null) {
- result.put("msg", "没有成功获取到基本对象");
- } else if(object.getString("msg") != null) {
- result.put("msg", object.getString("msg"));
- }
- } else {
- Connection connection = null;
- PreparedStatement preparedStatement = null;
- //Statement statement = null;
- ResultSet rs = null;
- try {
- connection = createConnection(object.getString("className"), object.getString("url"), object.getString("user"), object.getString("pwd"));
- String sql = object.getString("sql");
- System.out.println(sql);
- preparedStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
- if(pageIndex == 1 && pageSize == 1) {
- rs = preparedStatement.executeQuery();
- } else {
- preparedStatement.setMaxRows(((pageIndex - 1) * pageSize) + pageSize);//查询的最大行数
- //preparedStatement.setMaxRows(pageSize);
- rs = preparedStatement.executeQuery();
- //rs.first();
- rs.absolute((pageIndex - 1) * pageSize + 1);//利用绝对定位定位到结果集的每页第二条数据
- rs.relative(-1);//利用结果集的相对定位定位到每页的第一条数据
- }
- JSONArray datas = new JSONArray();
- JSONArray data = null;
- ResultSetMetaData metaData = null;
- int colnumCount = 0;
- String colnumName = null;
- Object tmp = null;
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Reader reader = null;
- BufferedReader bufferedReader = null;
- char[] chbTmp = null;
- StringBuffer sb = new StringBuffer();
- while(rs.next()) {
- //获取数据
- data = new JSONArray();
- metaData = rs.getMetaData();
- colnumCount = metaData.getColumnCount() + 1;
- for (int i = 1; i < colnumCount; i++) {
- colnumName = metaData.getColumnName(i);
- tmp = rs.getObject(colnumName);
- if(tmp == null) {
- data.add("");
- } else {
- if(tmp.getClass() == Timestamp.class) {
- data.add(dateFormat.format(tmp));
- } else if(tmp.getClass() == CLOB.class) {
- chbTmp = new char[20];
- reader = rs.getClob(colnumName).getCharacterStream();
- bufferedReader = new BufferedReader(reader);
- bufferedReader.read(chbTmp);
- sb.delete(0, chbTmp.length);
- sb.append(chbTmp);
- data.add(sb.toString() + "...");
- } else {
- data.add(tmp);
- }
- }
- }
- datas.add(data);;
- }
- JSONArray colnums = new JSONArray();
- if(datas.size() > 0) {
- //获取列名
- metaData = rs.getMetaData();
- colnumCount = metaData.getColumnCount() + 1;
- for (int i = 1; i < colnumCount; i++) {
- colnumName = metaData.getColumnName(i);
- colnums.add(colnumName);
- }
- } else {
- colnums.add("没有成功获取列的信息");
- }
- result.put("colnum", colnums);
- result.put("datas", datas);
- result.put("success", true);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- result.put("success", false);
- result.put("msg", e.getMessage());
- } catch (SQLException e) {
- e.printStackTrace();
- result.put("success", false);
- result.put("msg", e.getMessage());
- } catch (IOException e) {
- e.printStackTrace();
- result.put("success", false);
- result.put("msg", e.getMessage());
- } finally {
- close(connection, preparedStatement, rs);
- }
- }
- return result;
- }
- JDBC实现分页查询,同时使用动态数据源
- JDBC实现分页查询,同时使用动态数据源
- 使用JDBC实现分页查询
- 使用JDBC实现分页查询
- JDBC实现分页查询
- 使用ibatis实现动态分页查询
- 使用ibatis实现动态分页查询
- JDBC分页查询及实现
- 使用数据源控件实现分页
- 使用Spring JDBC实现mysql的分页查询
- jquery实现json数据源,动态数字分页
- ajax 动态绑定table同时实现分页
- AngularJS+Bootstrap 分页功能实现,同时支持模糊查询分页
- Jdbc实现页面分页查询功能
- JDBC/InvocationHandler动态代理实现数据库连接池、数据源
- 实现ASPxGridView基于AJAX和自定义数据源的分页查询
- 使用JDBC连接MySQL数据库--典型案例分析(八)----实现员工数据的分页查询
- 使用 HibernateTemplate 实现分页查询
- ajax请求类库
- [Core Java. Volume I. Fundamentals, 8th Edition]-11
- android 9patch使用
- Linux文件、文件夹权限的简述
- HTML之Table简约时尚CSS样式 + HTML中checkbox元素【全选】或【取消全选】、或得到选中个数全案例使用详解
- JDBC实现分页查询,同时使用动态数据源
- [基础]RHEL挂载ISO磁盘
- Java中堆内存和栈内存详解
- iptables开启与关闭
- android logo:内核、android开机动画
- Android 监听apk安装替换卸载广播
- 每日一题(32) - 顺时针打印矩阵 和 螺旋矩阵
- nyoj-84-阶乘的0
- Android Application 对象介绍