jdbc demo
2016-07-14 16:50
190 查看
JdbcUnits.java
JdbcHelper.java
ztoQuantityStatisDaoImpl.java
package com.zto.branchaging.common.util; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import org.apache.kylin.jdbc.Driver; /** * JDBC工具类 * * @author KAKAXI * */ public final class JdbcUnits { private static Properties info; private static Driver driver; /** * 装载驱动 */ static { try { driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } info = new Properties(); info.put("user", "ADMIN"); info.put("password", "KYLIN"); } /** * 建立数据库连接 * * @return * @throws SQLException */ public static Connection getConnection() throws SQLException { Connection conn = driver.connect("jdbc:kylin://10.9.12.11:7070/SCAN_PROJECT", info); return conn; } /** * 释放连接 * @param conn */ private static void freeConnection(Connection conn) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 释放statement * @param statement */ private static void freeStatement(Statement statement) { try { statement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 释放resultset * @param rs */ private static void freeResultSet(ResultSet rs) { try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 释放资源 * * @param conn * @param statement * @param rs */ public static void free(Connection conn, Statement statement, ResultSet rs) { if (rs != null) { freeResultSet(rs); } if (statement != null) { freeStatement(statement); } if (conn != null) { freeConnection(conn); } } public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance(); Properties info = new Properties(); info.put("user", "ADMIN"); info.put("password", "KYLIN"); Connection conn = driver.connect("jdbc:kylin://*.*.*.*:7070/SCAN_PROJECT", info); Statement state = conn.createStatement(); ResultSet resultSet = state.executeQuery("select line_id,weight from scan.zto_quantity_statis where rec_scan_date = '20160601' and REC_ PROV_ID = '310000' and sign_prov_id = '330000' and segment_weight > 1 and segment_weight <= 3"); while (resultSet.next()) { System.out.println(resultSet.getString(1) +" --- "+ resultSet.getString(2)); } System.out.println("aaaaa"); } }
JdbcHelper.java
package com.zto.branchaging.common.util; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 数据库访问帮助类 * * @author KAKAXI * */ public class JdbcHelper { private static Connection conn = null; private static PreparedStatement preparedStatement = null; /** * 用于查询,返回结果集 * * @throws SQLException */ @SuppressWarnings("rawtypes") public static List query(String sql) throws SQLException { ResultSet rs = null; try { getPreparedStatement(sql); rs = preparedStatement.executeQuery(); return ResultToListMap(rs); } catch (SQLException e) { throw new SQLException(e); } finally { free(rs); } } /** * 用于带参数的查询,返回结果集 * * @param sql * sql语句 * @param paramters * 参数集合 * @return 结果集 * @throws SQLException */ @SuppressWarnings("rawtypes") public static ResultSet query(String sql, Object... paramters) throws SQLException { ResultSet rs = null; try { getPreparedStatement(sql); //preparedStatement.setMaxRows(26);//关键代码,设置最大记录数为当前页记 for (int i = 0; i < paramters.length; i++) { preparedStatement.setObject(i + 1, paramters[i]); } rs = preparedStatement.executeQuery(); // rs.first(); // rs.relative(1);//关键代码,直接移动游标为当前页起始记录处 return rs; } catch (SQLException e) { throw new SQLException(e); } finally { // free(rs); } } public static <T> List<T> convertToList(ResultSet rs,Class<T> t) throws SQLException { List result = new ArrayList(); try { result = obtainEntityObject(rs,t); } catch (Exception e) { e.printStackTrace(); }finally{ free(rs); } /*List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); int columnCount = md.getColumnCount(); while (rs.next()) { Map<String, Object> rowData = new HashMap<String, Object>(); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } String sss = list.toString(); sss = sss.replace("]", "").replace("[", ""); JSONArray jr = JSONArray.parseArray(sss); //JSONArray jr = JSONArray.fromObject(list); //List<T> resultList = JSONArray.toList(jr, t); List<T> listDay = new ArrayList<T>(JSONArray.parseArray(jr.toJSONString(),t)); return listDay; */ return result; } /** * 返回单个结果的值,如count\min\max等等 * * @param sql * sql语句 * @return 结果集 * @throws SQLException */ public static Object getSingle(String sql) throws SQLException { Object result = null; ResultSet rs = null; try { getPreparedStatement(sql); rs = preparedStatement.executeQuery(); if (rs.next()) { result = rs.getObject(1); } return result; } catch (SQLException e) { throw new SQLException(e); } finally { free(rs); } } @SuppressWarnings({ "unchecked", "rawtypes" }) private static List ResultToListMap(ResultSet rs) throws SQLException { List list = new ArrayList(); while (rs.next()) { ResultSetMetaData md = rs.getMetaData(); Map map = new HashMap(); for (int i = 1; i < md.getColumnCount(); i++) { map.put(md.getColumnLabel(i), rs.getObject(i)); } list.add(map); } return list; } /** * 获取PreparedStatement * * @param sql * @throws SQLException */ private static void getPreparedStatement(String sql) throws SQLException { conn = JdbcUnits.getConnection(); preparedStatement = conn.prepareStatement(sql); } /** * 释放资源 * * @param rs * 结果集 */ public static void free(ResultSet rs) { JdbcUnits.free(conn, preparedStatement, rs); } /** * 释放资源 * * @param statement * @param rs */ public static void free(Statement statement, ResultSet rs) { JdbcUnits.free(conn, statement, rs); } /** * 释放资源 */ public static void free() { free(null); } //转化成实体list(注意实体类字段类型在此方法中必须要指定) public static <T> List<T> obtainEntityObject(ResultSet rs, Class cls) throws Exception { List<String> columnList = new ArrayList<String>(); ResultSetMetaData data = rs.getMetaData(); for (int i = 1; i <= data.getColumnCount(); i++) { // 获得指定列的列名 String columnName = data.getColumnName(i); columnList.add(columnName); }; List list = new ArrayList(); Field[] fields = cls.getDeclaredFields(); while (rs.next()) { Object obj = newInstance(cls); for(int i=0;i<columnList.size();i++){ for (int j = 0; j < fields.length; j++) { Class<?> type = fields[j].getType(); String fieldName = fields[j].getName(); String fieldNameUpper = fieldName.toUpperCase(); if(fieldNameUpper.equals(columnList.get(i))){ if (type.getName().equals(String.class.getName())) { String value = rs.getString(fieldName); setProperty(obj, fieldName, value); break; }else if (type.getName().equals(int.class.getName())||type.getName().equals(Integer.class.getName())) { Integer value = rs.getInt(fieldName); setProperty(obj, fieldName, value); break; }else if (type.getName().equals(double.class.getName())||type.getName().equals(Double.class.getName())) { Double value = rs.getDouble(fieldName); setProperty(obj, fieldName, value); break; }else if (type.getName().equals(long.class.getName())||type.getName().equals(Long.class.getName())) { Long value = rs.getLong(fieldName); setProperty(obj, fieldName, value); break; }else if (type.getName().equals(short.class.getName())||type.getName().equals(Short.class.getName())) { Short value = rs.getShort(fieldName); setProperty(obj, fieldName, value); break; }else if(type.getName().equals(Date.class.getName())) { Date value = rs.getDate(fieldName); setProperty(obj, fieldName, value); break; } }; } } list.add(obj); } return list; } private static Object newInstance(Class<?> cls) throws Exception { return cls.newInstance(); } private static void setProperty(Object obj, String name, Object value) throws Exception { Class<? extends Object> clazz = obj.getClass(); String methodName = returnSetMethodName(name); Method[] ms = clazz.getMethods(); for (Method m : ms) { if (m.getName().equals(methodName)) { if (m.getParameterTypes().length == 1) { Class<?> clazzParameterType = m.getParameterTypes()[0]; setFieldValue(clazzParameterType.getName(), value, m, obj); break; } } } } private static void setFieldValue(String parameterTypeName, Object value, Method m, Object obj) throws Exception { m.invoke(obj, value); return; /*if (parameterTypeName.equals(int.class.getName())) { value = new Integer(Integer.parseInt(value.toString())); m.invoke(obj, value); return; } if (parameterTypeName.equals(String.class.getName())) { m.invoke(obj, value); return; }*/ } private static String returnSetMethodName(String name) { name = name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); return "set" + name; } }
ztoQuantityStatisDaoImpl.java
package com.zto.branchaging.core.dao.impl; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.stereotype.Repository; import com.zto.branchaging.common.util.JdbcHelper; import com.zto.branchaging.core.dao.ZtoQuantityStatisDao; import com.zto.branchaging.dal.model.TimeLineAmount; @Repository public class ztoQuantityStatisDaoImpl implements ZtoQuantityStatisDao{ String sql = null; @Override public List<TimeLineAmount> selectProvToProvAmount(String paramDate,String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { sql = "select 0 as rangNo,'20160601'as dateTime,'666' as ddd, " + "line_id as lineId,weight as countWeigth from scan.zto_quantity_statis where rec_scan_date = ? and REC_PROV_ID = ? and sign_prov_id = '330000' and segment_weight > 1 and segment_weight <= 3"; sql = " SELECT Z.startSite,Z.endSite,Z.type,Z.COUNTONE as countOne,Z.COUNTWEIGTH,Z.BACKCOUNT,Z.BACKCOUNTWEIGTH,Z.percentage,X.countAllTotal,X.weigthAllTotal FROM (select L.startSite,L.endSite,L.type,L.COUNTONE,L.COUNTWEIGTH,M.COUNTONE as BACKCOUNT,M.COUNTWEIGTH AS BACKCOUNTWEIGTH,L.COUNTONE/M.COUNTONE as percentage from (select l.sign_prov_id as startSite, l.rec_prov_id as endSite,l.type,count(1) as COUNTONE,SUM(WEIGHT) AS COUNTWEIGTH from ZTO_QUANTITY_STATIS l where statistics_date=? group by l.sign_prov_id,l.rec_prov_id,l.type )L left join ( select sign_prov_id as startSite,rec_prov_id as endSite,type,COUNT(1) AS COUNTONE,SUM(WEIGHT) AS COUNTWEIGTH from ZTO_QUANTITY_STATIS where statistics_date='20160601' group by sign_prov_id,rec_prov_id,type)M on L.startSite = M.endSite and L.endSite = M.startSite and L.Type = M.type order by COUNTONE desc )Z, ( select COUNT(1) AS countAllTotal,SUM(WEIGHT) AS weigthAllTotal from ZTO_QUANTITY_STATIS l where statistics_date='20160601' and l.sign_prov_id = '310000' )X"; List<TimeLineAmount> result = new ArrayList<TimeLineAmount>(); System.out.println("进来了!!!!"); String timeOne = "20160601"; String two = "310000"; try { result = JdbcHelper.convertToList(JdbcHelper.query(sql, timeOne),TimeLineAmount.class); } catch (SQLException e) { System.out.println("kyLin查询报错!"); e.printStackTrace(); } return result; } @Override public List<TimeLineAmount> selectProvToCityAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToProvAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCityAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCenterAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCityAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToProvAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCityAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCenterAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToCenterAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCenterAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToProvAmount(String paramDate, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToProvAmountOne(Date time, Date endTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToCityAmountOne(Date time, Date endTime, String startSite, String endSite, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToCenterAmountOne(Date time, Date endTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToProvAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCityAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCenterAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCenterAmountOne(Date time, Date endTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToProvAmountOne(Date time, Date endTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCityAmountOne(Date time, Date endTime, String startSite, String endSite, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToProvAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, String startTopCity, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCityAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, String startTopCity, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCenterAmountOne(Date time, Date endTime, String startSite, String endSite, String startTopProvince, String startTopCity, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToProvAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToCityAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectProvToCenterAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToProvAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCityAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCityToCenterAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCenterAmountDetail( Date beginTime, Date overTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToProvAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectCenterToCityAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToProvAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, String startTopCity, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCityAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, String startTopCity, String endTopProvince, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } @Override public List<TimeLineAmount> selectSiteToCenterAmountDetail(Date beginTime, Date overTime, String startSite, String endSite, String startTopProvince, String startTopCity, Integer fastType, Integer lastType, Integer type, String orderBy, String desc) { // TODO Auto-generated method stub return null; } // public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { // Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance(); // Properties info = new Properties(); // info.put("user", "ADMIN"); // info.put("password", "KYLIN"); // Connection conn = driver.connect("jdbc:kylin://*.*.*.*:7070/SCAN_PROJECT", info); // // Statement state = conn.createStatement(); // ResultSet resultSet = state.executeQuery("select line_id,weight from scan.zto_quantity_statis where rec_scan_date = '20160601' and REC_PROV_ID = '310000' and sign_prov_id = '330000' and segment_weight > 1 and segment_weight <= 3"); // // while (resultSet.next()) { // System.out.println(resultSet.getString(1) +" --- "+ resultSet.getString(2)); // } // } }
相关文章推荐
- Yii2 数据操作Query Builder(转)
- 获取keyWindow
- 【poj3368】Frequent values 线段树 区间最高频
- 死锁
- SVN working copy locked解决方法
- MongoDB监控手段大全
- centos7下lamp环境搭建
- 改进的最大公约数和最小公倍数问题
- Python实现Singleton模式
- cordova添加android平台时选择安装版本
- SpringMVC初学---spring3.1新特性
- hdu 4512吉哥系列故事——完美队形I(动态规划LCIS)
- HDU 3607 线段树
- 命令执行不能使用空格绕过
- MySQL详解--锁,事务
- Java 构造方法的执行过程(猜测)
- MySQL数据库系列之建立高性能的索引
- Bitmap的高效加载
- 浏览器不能正常上网
- OpenJ_Bailian 4081 树的转换 数据结构