您的位置:首页 > 其它

jdbc demo

2016-07-14 16:50 190 查看
JdbcUnits.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));
//        }
//    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: