MySQL、oracle分页原生查询
2017-07-14 16:52
281 查看
//根据表名 关键字 进行分页查询 @Override public JSONArray doGet(String tableName, String keyWord,int pageNum,int pageSize) { ResultSet result = null; PreparedStatement pre = null; try { //根据数据库类型查询表的所有列名 String dataType = con.getMetaData().getDatabaseProductName(); String columnSql = ""; switch (dataType) { case "MySQL": columnSql = "select COLUMN_NAME from information_schema.COLUMNS where table_name ='"+tableName+"'"; break; case "Oracle": columnSql = "select COLUMN_NAME from all_tab_columns where table_name ='"+tableName+"'"; default: break; } pre = con.prepareStatement(columnSql); result = pre.executeQuery(); //拼接sql StringBuilder sql = new StringBuilder("select * from "+tableName+" t where "); ResultSetMetaData md = result.getMetaData();// 得到结果集(rs)的结构信息,比如字段数、字段名等 int columnCount = md.getColumnCount(); // 返回此 ResultSet 对象中的列数 while (result.next()) { for(int i=1;i<=columnCount;i++){ sql.append(sql.append("t."+result.getObject(i))+" like '%"+keyWord+"%' or "); } } sql = sql.delete(sql.length()-3, sql.length());//去掉sql末尾的or if("MySQL".equals(dataType)){//MySQL分页语句拼接 sql = sql.append("LIMIT "+pageNum+","+pageSize+""); } if("Oracle".equals(dataType)){//Oracle分页语句拼接 String sqlStr = "SELECT * FROM (SELECT a.*, ROWNUM rn FROM ("+sql+") a WHERE ROWNUM <="+pageNum*pageSize+" ) WHERE rn >="+(pageNum-1)*pageSize+""; sql = sql.replace(0,sql.length(), sqlStr); } pre = con.prepareStatement(sql.toString()); result = pre.executeQuery(); } catch (Exception e) { e.printStackTrace(); } return resultSetToList(pre, result); } /** * 将Res 4000 ultSet结果集转成JSONArray * * @param pre * @param rs * @return * @author */ public JSONArray resultSetToList(PreparedStatement pre, ResultSet result) { if (result == null) return null; JSONArray array = new JSONArray(); try { ResultSetMetaData md = result.getMetaData();// 得到结果集(rs)的结构信息,比如字段数、字段名等 int columnCount = md.getColumnCount(); // 返回此 ResultSet 对象中的列数 JSONObject json = null; while (result.next()) { json = new JSONObject(); for (int i = 1; i <= columnCount; i++) { if(!"".equals(result.getObject(i))){ if(result.getObject(i) instanceof Date){ json.put(md.getColumnName(i), sdf.format(result.getObject(i))); }else{ json.put(md.getColumnName(i), result.getObject(i)); } }else{ json.put(md.getColumnName(i), ""); } } array.put(json); } } catch (SQLException | JSONException e) { e.printStackTrace(); } finally { close(result); close(pre); close(con); } //"返回json数据:" + array); return array; }
相关文章推荐
- MySQL、Oracle和SQL Server的分页查询语句
- MySQL、SqlServer、Oracle、DB2四大数据库分页查询
- Oracle、MySQL和SqlServe分页查询的语句区别
- mysql,sqlServer,oracle分页查询
- Oracle和Mysql的分页查询语句
- MySQL、SqlServer、Oracle三大主流数据库分页查询
- mybatis分页查询(Mysql,oracle分页语句)
- MySQL、SqlServer、Oracle三大主流数据库分页查询 (MySQL分页不能用top,因为不支持)
- Oracle、MySql、SQLServer 数据分页查询
- 各种数据库(MYSQL、Oracle、DB2、SQL Server、PostgreSQL)的分页查询语句
- oracle与mysql分页查询语句sql
- MySQL、SqlServer、Oracle三大主流数据库分页查询
- MySQL、SqlServer、Oracle三大主流数据库实现分页查询的方法
- sqlserver,oracle,mysql分页查询语句
- MySQL与Oracle的分页查询语句
- Oracle、 Mysql 、 SQLserver 分页查询
- oracle,mysql,SqlServer三种数据库的分页查询
- oracle,mysql,SqlServer三种数据库的分页查询的实例
- Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍
- oracle VS mysql 的分页查询