java中对反射的应用

--需要用的工具类,java工具类标签里面有

package com.yanshu.utils;



import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.SynchronousQueue;


import org.springframework.data.crossstore.HashMapChangeSet;


import com.alibaba.fastjson.JSON;
import com.yanshu.pojo.Shop_Inde;
import com.yanshu.pojo.Shop_IndePc;
import com.yanshu.pojo.Shop_IndeWifi;
import com.yanshu.tools.MapPojo;
/*import com.yanshu.pojo.Shop_Indexes;
import com.yanshu.test.MapPojo;
import com.yanshu.test.MapTrunPojo;
import com.yanshu.test.Student;*/
import com.yanshu.utils.ConnSql;
import com.yanshu.utils.JdbcUtil;
/**
 * 完整
 * @author Administrator
 *
 */
public class ProcJsonUtil {


public static   Map findProcs(String storageName, String[] args) {
CallableStatement cs = null;
ResultSet rs = null;
Map map = new HashMap();
Connection conn = JdbcUtil.getConn();
try {
String newStorageName = ConnSql.storageNameHandle(storageName, args.length);
cs = conn.prepareCall("{call " + newStorageName + "}");
for (int i = 0; i < args.length; i++) {
cs.setString(i + 1, args[i]);
}
rs = cs.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();

/**
* 遍历循环出表的列名
*/
List list = new ArrayList<>();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String columnLabel = rsmd.getColumnLabel(i + 1);
list.add(columnLabel);
}
list = (List) JSON.toJSON(list);
/**
* 遍历循环出列向对应的字段
*/
List listtwo = new ArrayList<>();
int listii = 0;
int ii = rsmd.getColumnCount();
while (rs.next()) {
List listtre = new ArrayList<>();


for (int i = 1; i <= ii; i++) {
Object columnValue = rs.getObject(i);
if(columnValue==null)
{
Object object="0";
columnValue=object;
}
listtre.add(columnValue);


}
listtwo.add(listtre);
listii = listtwo.size();
}
Map> map1 = new HashMap>();
Map mapTwo = new HashMap();


mapTwo.put("rows", listtwo);
mapTwo.put("columns", list);
//map.put("count", listii);
map.put("data", mapTwo);


} catch (SQLException e) {
e.printStackTrace();
}finally
{
//释放资源
JdbcUtil.closeConn(rs, cs, null, null, conn);
}
return map;


}
public static String getIndicators(String storageName, String[] args)
{

Connection conn = null;
CallableStatement cs=null;
ResultSet rs=null;
try {
conn = JdbcUtil.getConn();
String newStorageName = ConnSql.storageNameHandle(storageName, args.length);
cs = conn.prepareCall("{call " + newStorageName + "}");
//遍历循环参数
for (int i = 0; i < args.length; i++) {
cs.setString(i + 1, args[i]);
}
rs = cs.executeQuery();
ResultSetMetaData rsmdThree = rs.getMetaData();
int columnCount = rsmdThree.getColumnCount();

/**
* 遍历循环出表的列名
*/
List list = new ArrayList<>();

for (int i = 0; i String columnLabel = rsmdThree.getColumnLabel(i + 1);
list.add(columnLabel);
}
list = (List) JSON.toJSON(list);
System.out.println(list);//-----
/**
* 遍历循环出列向对应的字段
*/
List listtwo = new ArrayList<>();
List listIndicators=new ArrayList<>();
int listii = 0;
while (rs.next()) {
List listtre = new ArrayList<>();
for (int i = 1; i <=columnCount; i++) {
Object columnValue = rs.getObject(i);
if(columnValue==null)
{
Object object="0";
columnValue=object;
}
listtre.add(columnValue);



}
listtwo.add(listtre);
//格式 [{},{}]
Map dataMap = new HashMap(0);
for (int i = 1; i <= rsmdThree.getColumnCount(); i++) {
dataMap.put(rsmdThree.getColumnName(i), rs.getObject(i));
}
listIndicators.add(dataMap);
}
Map map=new HashMap<>();
map.put("coluem",list);
map.put("rows", listtwo);
System.out.println("222-->>>"+JSON.toJSON(map));
System.out.println("111--->>"+JSON.toJSON(listtwo));//-----
System.out.println("222--->>"+JSON.toJSONString(listIndicators));//----

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return "111";
}




public static String getIndicatorse(String storageName, String[] args)
{

Connection conn = null;
CallableStatement cs=null;
ResultSet rs=null;
String zhengh=null;
List listliulian=null;
List listfangke=null;
List listxiadan=null;
List listzhifu=null;
List listwanjei =null;
List listIndicators=new ArrayList<>();
try {
conn = JdbcUtil.getConn();
String newStorageName = ConnSql.storageNameHandle(storageName, args.length);
cs = conn.prepareCall("{call " + newStorageName + "}");
//遍历循环参数
for (int i = 0; i < args.length; i++) {
cs.setString(i + 1, args[i]);
}
rs = cs.executeQuery();
ResultSetMetaData rsmdThree = rs.getMetaData();
int columnCount = rsmdThree.getColumnCount();


/**
* 遍历循环出列向对应的字段
*/
List listtwo = new ArrayList<>();

int listii = 0;
while (rs.next()) {

//格式 [{},{}]
Map dataMap = new HashMap(0);
for (int i = 1; i <= rsmdThree.getColumnCount(); i++) {
dataMap.put(rsmdThree.getColumnName(i), rs.getObject(i));

}

/*  listliulian.add(liu);
listfangke.add(fangke);
listxiadan.add(xiadan);
listzhifu.add(zhifu);
listwanjei.add(wanjei);*/
Object key=null;
  Object value=null;
//System.out.println(dataMap);
for (Object map : dataMap.entrySet()){  
key = ((Map.Entry)map).getKey();
   value = ((Map.Entry)map).getValue();
   if(key=="无线访客占比"||key.equals("无线访客占比"))
   {
    Object mapTurnPojo = MapPojo.mapTurnPojo(dataMap, Shop_IndeWifi.class);
System.out.println(mapTurnPojo);
listliulian = Shop_IndeWifi.listliulian;
listfangke = Shop_IndeWifi.listfangke;
listxiadan = Shop_IndeWifi.listxiadan;
listzhifu = Shop_IndeWifi.listzhifu;
listwanjei = Shop_IndeWifi.listwanjei;
   }
   else   if(key=="全平台访客占比"||key.equals("全平台访客占比"))
   {
    Object mapTurnPojo = MapPojo.mapTurnPojo(dataMap, Shop_Inde.class);
System.out.println(mapTurnPojo);
listliulian = Shop_Inde.listliulian;
listfangke = Shop_Inde.listfangke;
listxiadan = Shop_Inde.listxiadan;
listzhifu = Shop_Inde.listzhifu;
listwanjei = Shop_Inde.listwanjei;
   }
   
   else    if(key=="PC访客占比"||key.equals("PC访客占比"))
   {
    Object mapTurnPojo = MapPojo.mapTurnPojo(dataMap, Shop_IndePc.class);
System.out.println(mapTurnPojo);
listliulian = Shop_IndePc.listliulian;
listfangke = Shop_IndePc.listfangke;
listxiadan = Shop_IndePc.listxiadan;
listzhifu = Shop_IndePc.listzhifu;
listwanjei = Shop_IndePc.listwanjei;
   }
   
}

}


String listliulians="{\"流量特征 \":"+listliulian+"}";
String listfangkes="{\"访客特征 \":"+listfangke+"}";
String listxiadans="{\"下单特征 \":"+listxiadan+"}";
String listzhifus="{\"支付特征 \":"+listzhifu+"}";
String listwanjeis="{\"完结特征 \":"+listwanjei+"}";
zhengh="["+listliulians+","+listfangkes+","+listxiadans+","+listzhifus+","+listwanjeis+"]";
Shop_Inde.listliulian.clear();
Shop_Inde.listfangke.clear();
Shop_Inde.listxiadan.clear();
Shop_Inde.listzhifu.clear();
Shop_Inde.listwanjei.clear();
Shop_IndeWifi.listliulian.clear();
Shop_IndeWifi.listfangke.clear();
Shop_IndeWifi.listxiadan.clear();
Shop_IndeWifi.listzhifu.clear();
Shop_IndeWifi.listwanjei.clear();
Shop_IndePc.listliulian.clear();
Shop_IndePc.listfangke.clear();
Shop_IndePc.listxiadan.clear();
Shop_IndePc.listzhifu.clear();
Shop_IndePc.listwanjei.clear();
 
 
 
// System.out.println(zhengh);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
//释放资源
JdbcUtil.closeConn(rs, cs, null, null, conn);
}



return zhengh;
}

public static void main(String[] args) throws Exception {


//String[] par = new String[] {"1783198133", "36155392729","2","20170801","20170820"};
//Map map1 = findProcs("SP_Find_Auctiontargetes", par);
//exec  SP_FindTarget_news @Sellerid=601879343  ,  @Starttime= 20170801 , @ETime=20170825 , @platfrom=2
//String[] par = new String[] {"601879343", "20170801","20170825","2"};
//Map map1 = getIndicators("SP_FindTarget_news", par);
//System.out.println(getIndicators("SP_FindTarget_news", par));
//Description Resource Path Location Type
//F:/java/.m2/repository/com/datastax/cassandra/cassandra-driver-core/3.1.4/cassandra-driver-core-3.1.4.jar' in project 'ysss' cannot be read or is not a valid ZIP file ysss Build path Build Path Problem


Long start=0L;
Long end=0L;
start=System.currentTimeMillis();
String[] par = new String[] {"601879343", "20170801","20170807","1"};
//Map map1 = getIndicators("SP_FindTarget_news", par);
String indicatorse2 = getIndicatorse("SP_FindTarget_news", par);
System.out.println(indicatorse2);
//System.out.println(JSON.toJSONString(indicatorse2));



end=System.currentTimeMillis();
System.out.println("使用StringBuffer的时间是:" + (end - start) + "毫秒!");




}






}

-----反射的应用

package com.yanshu.tools;


import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
//1.利用反射完成Map转成实体对象功能是实现的方法2.编写了指标的表格的接口3.优化了17个宝贝的接口和宝贝折线图,树状图的接口
public class MapPojo {
/**
     * Map转成实体对象
     * @param map map实体对象包含属性
     * @param clazz 实体对象类型
     * @return
     */
    public static Object mapTurnPojo(Map map,Class clazz)
    {
    if(map==null)
    {
    return null;
    }
    Object object=null;
    try {
    //创建一个新的实例
object=clazz.newInstance();


//获取和操作类的一组私有的属性
Field[] fields=object.getClass().getDeclaredFields();
for (Field field : fields) {
int modifiers = field.getModifiers();
//对类和成员访问修饰符进行解码
if(Modifier.isStatic(modifiers)||Modifier.isFinal(modifiers))
{
continue;
}
field.setAccessible(true);
            field.set(object, map.get(field.getName()));
           
}


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

return object;
    }


}

----实体的调用 ,其他2个类似省略。。。

package com.yanshu.pojo;


import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Shop_Inde {
private Long 日期;
private Long 访客数;
private Long 新访客数;
private Long 回头客数;
private BigDecimal 新访客占比;
private BigDecimal 全平台访客占比;
private BigDecimal PC访客占比;
private BigDecimal 无线访客占比;
private BigDecimal 一次留存率;
private BigDecimal 平均访问深度;
private BigDecimal 详情页到达率;
private BigDecimal 详情页收藏率;
private BigDecimal 详情页加购率;
private Long 店铺拍下笔数;
private BigDecimal 店铺拍下金额;
private BigDecimal 店铺下单率;
private BigDecimal 下单客单件;
private BigDecimal 下单客单价;
private BigDecimal 店铺成交金额;
private BigDecimal 下单支付率;
private BigDecimal 订单支付率;
private BigDecimal 支付客单件;
private BigDecimal 支付客单价;
private BigDecimal 已收货金额;
private Long 交易成功笔数;
private Long 已收货商品数;
private BigDecimal 退款成功金额;
private BigDecimal 七天订单完结率;


public Long get日期() {
return 日期;
}
public void set日期(Long 日期) {
this.日期 = 日期;
}
public Long get访客数() {
return 访客数;
}
public void set访客数(Long 访客数) {
this.访客数 = 访客数;
}
public Long get新访客数() {
return 新访客数;
}
public void set新访客数(Long 新访客数) {
this.新访客数 = 新访客数;
}
public Long get回头客数() {
return 回头客数;
}
public void set回头客数(Long 回头客数) {
this.回头客数 = 回头客数;
}




public BigDecimal get新访客占比() {
return 新访客占比;
}
public void set新访客占比(BigDecimal 新访客占比) {
this.新访客占比 = 新访客占比;
}



public BigDecimal get全平台访客占比() {
return 全平台访客占比;
}
public void set全平台访客占比(BigDecimal 全平台访客占比) {
this.全平台访客占比 = 全平台访客占比;
}
public BigDecimal get一次留存率() {
return 一次留存率;
}
public void set一次留存率(BigDecimal 一次留存率) {
this.一次留存率 = 一次留存率;
}
public BigDecimal get平均访问深度() {
return 平均访问深度;
}
public void set平均访问深度(BigDecimal 平均访问深度) {
this.平均访问深度 = 平均访问深度;
}
public BigDecimal get详情页到达率() {
return 详情页到达率;
}
public void set详情页到达率(BigDecimal 详情页到达率) {
this.详情页到达率 = 详情页到达率;
}
public BigDecimal get详情页收藏率() {
return 详情页收藏率;
}
public void set详情页收藏率(BigDecimal 详情页收藏率) {
this.详情页收藏率 = 详情页收藏率;
}
public BigDecimal get详情页加购率() {
return 详情页加购率;
}
public void set详情页加购率(BigDecimal 详情页加购率) {
this.详情页加购率 = 详情页加购率;
}
public Long get店铺拍下笔数() {
return 店铺拍下笔数;
}
public void set店铺拍下笔数(Long 店铺拍下笔数) {
this.店铺拍下笔数 = 店铺拍下笔数;
}
public BigDecimal get店铺拍下金额() {
return 店铺拍下金额;
}
public void set店铺拍下金额(BigDecimal 店铺拍下金额) {
this.店铺拍下金额 = 店铺拍下金额;
}
public BigDecimal get店铺下单率() {
return 店铺下单率;
}
public void set店铺下单率(BigDecimal 店铺下单率) {
this.店铺下单率 = 店铺下单率;
}
public BigDecimal get下单客单件() {
return 下单客单件;
}
public void set下单客单件(BigDecimal 下单客单件) {
this.下单客单件 = 下单客单件;
}
public BigDecimal get下单客单价() {
return 下单客单价;
}
public void set下单客单价(BigDecimal 下单客单价) {
this.下单客单价 = 下单客单价;
}
public BigDecimal get店铺成交金额() {
return 店铺成交金额;
}
public void set店铺成交金额(BigDecimal 店铺成交金额) {
this.店铺成交金额 = 店铺成交金额;
}
public BigDecimal get下单支付率() {
return 下单支付率;
}
public void set下单支付率(BigDecimal 下单支付率) {
this.下单支付率 = 下单支付率;
}
public BigDecimal get订单支付率() {
return 订单支付率;
}
public void set订单支付率(BigDecimal 订单支付率) {
this.订单支付率 = 订单支付率;
}
public BigDecimal get支付客单件() {
return 支付客单件;
}
public void set支付客单件(BigDecimal 支付客单件) {
this.支付客单件 = 支付客单件;
}
public BigDecimal get支付客单价() {
return 支付客单价;
}
public void set支付客单价(BigDecimal 支付客单价) {
this.支付客单价 = 支付客单价;
}
public BigDecimal get已收货金额() {
return 已收货金额;
}
public void set已收货金额(BigDecimal 已收货金额) {
this.已收货金额 = 已收货金额;
}
public Long get交易成功笔数() {
return 交易成功笔数;
}
public void set交易成功笔数(Long 交易成功笔数) {
this.交易成功笔数 = 交易成功笔数;
}
public Long get已收货商品数() {
return 已收货商品数;
}
public void set已收货商品数(Long 已收货商品数) {
this.已收货商品数 = 已收货商品数;
}
public BigDecimal get退款成功金额() {
return 退款成功金额;
}
public void set退款成功金额(BigDecimal 退款成功金额) {
this.退款成功金额 = 退款成功金额;
}
public BigDecimal get七天订单完结率() {
return 七天订单完结率;
}
public void set七天订单完结率(BigDecimal 七天订单完结率) {
this.七天订单完结率 = 七天订单完结率;
}
public BigDecimal getPC访客占比() {
return PC访客占比;
}
public void setPC访客占比(BigDecimal pC访客占比) {
PC访客占比 = pC访客占比;
}
public BigDecimal get无线访客占比() {
return 无线访客占比;
}
public void set无线访客占比(BigDecimal 无线访客占比) {
this.无线访客占比 = 无线访客占比;
}

//return "{\"type\":\"error\"}";
//[{" 流量特征 :"[{"访客数:"3781", 新访客数:" 3357 ", 回头客数: " 424 }]}]
 public static   int count ;
 public static List listliulian=new ArrayList<>();
 public static List listfangke=new ArrayList<>();
 public static List listxiadan=new ArrayList<>();
 public static List listzhifu=new ArrayList<>();
 public static List listwanjei=new ArrayList<>();



@Override
public String toString() {
// Integer count=0;
Long start=0l;
String liu="";
String fangke="";
String xiadan="";
String zhifu="";
String wanjei="";




liu="{\"访客数\":"+ 访客数+",\"新访客数\":"+ 新访客数 +" ,\" 回头客数\": "+ 回头客数 + ",\" 新访客占比\": "+ 新访客占比 + ",\" 全平台访客占比\": "+ 全平台访客占比 + " }";

fangke="{\"一次留存率\":"+ 一次留存率+",\"详情页到达率\":"+ 详情页到达率 +" ,\" 平均访问深度\": "+ 平均访问深度 + " ,\" 页面收藏率\": "+ 详情页收藏率 + ",\" 页面加购率\": "+ 详情页加购率 + "}";

xiadan="{\"店铺拍下笔数\":"+ 店铺拍下笔数+",\"店铺拍下金额\":"+ 店铺拍下金额 +" ,\" 店铺下单率\": "+ 店铺下单率 + ",\" 下单客单件\": "+ 下单客单件 + ",\" 下单客单价\": "+ 下单客单价 + " }";

zhifu="{\"店铺成交金额\":"+ 店铺成交金额+",\"下单支付率\":"+ 下单支付率 +" ,\" 订单支付率\": "+ 订单支付率 + ",\" 支付客单件\": "+ 支付客单件 + ",\" 支付客单价\": "+ 支付客单价 + " }";
 
wanjei="{\"已收款金额\":"+ 已收货金额+",\"交易成功笔数\":"+ 交易成功笔数 +" ,\" 已收货商品数\": "+ 已收货商品数 + ",\" 退款成功金额\": "+ 退款成功金额 + ",\" 七天订单完结率\": "+ 七天订单完结率 + " }";
//System.out.println("liu--->>"+liu);
//start=System.currentTimeMillis();
// System.out.println(start);
int num = Shop_Inde.count++;
// System.out.println("num--->>>"+num);
 
int size = listliulian.size();
String zhengh=null;
String listliulians=null;
//for(int i=0;i// {
 
 
listliulian.add(liu);
listfangke.add(fangke);
listxiadan.add(xiadan);
listzhifu.add(zhifu);
listwanjei.add(wanjei); 




/* listliulians="{\"流量特征 \":"+listliulian+"}";
String listfangkes="{\"访客特征 \":"+listfangke+"}";
String listxiadans="{\"下单特征 \":"+listxiadan+"}";
String listzhifus="{\"支付特征 \":"+listzhifu+"}";
String listwanjeis="{\"完结特征 \":"+listwanjei+"}";
zhengh="["+listliulians+","+listfangkes+","+listxiadans+","+listzhifus+","+listwanjeis+"]";*/

//System.out.println("zhengh--->>"+zhengh);

 //

String string="";
return string;
}



/*public String toString() {
return "[{\" 流量特征\": {访客数:" + 访客数 + ", 新访客数=" + 新访客数 + ", 回头客数=" + 回头客数 + " ,新访客占比=" +新访客占比 + "}},"
+ "{访客特征= {一次留存率=" + 一次留存率 + ", 新访客数=" + 新访客数 +  ", 平均访问深度=" + 平均访问深度 + " ,新访客占比=" +新访客占比 + "}},"
+ "{下单特征= {访客数=" + 访客数 + ", 新访客数=" + 新访客数 + ", 回头客数=" + 回头客数 + "}},"
+ "{支付特征= {访客数=" + 访客数 + ", 新访客数=" + 新访客数 + ", 回头客数=" + 回头客数 + "}},"
+ "{完结特征= {访客数=" + 访客数 + ", 新访客数=" + 新访客数 + ", 回头客数=" + 回头客数 + "}}]"
;
}*/








}

你可能感兴趣的:(反射,常用的工具类JAVA,小知识,小)