对象生成sql 代码

/**
* 对象转化sql
* o 对象 User
* objName对象名称入User 
* whereSql 值如 "detailId='"+c.getDetailId()+"'"
*/
public String objectChangeInsertHql(Object o,String objName,String whereSql){
try{
List list= getFiledsInfo(o);
// StringBuffer sb=new StringBuffer("update "+o.getClass().getSimpleName()+" set ");
StringBuffer sb=new StringBuffer("insert into "+objName+"(");
StringBuffer sbb=new StringBuffer(""); 
for(int i=1;i<list.size();i++){//跳过id这个字段
Map<String,Object> mp=(Map<String,Object>)list.get(i);
String type=mp.get("type")+"";
String value=mp.get("value")+"";
if("null".equals(value)){
value="";
}
//mp.toString().replaceAll("null", "");
if("Integer".equals(type)){
sb.append(mp.get("name"));
sbb.append(value);
}else if("String".equals(type)){
sb.append(mp.get("name"));
sbb.append("'"+value+"'");
}else if("Double".equals(type)){
sb.append(mp.get("name"));
sbb.append(value);
}else if("Date".equals(type)){
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append(mp.get("name"));
sbb.append("'"+sf.format((Date)mp.get("value"))+"'");

}else{
sb.append(mp.get("name"));
sbb.append("'"+value+"'");
}
//sb.append(mp.get("name")+"=?");
if(i==list.size()-1){

}else{
sb.append(",");
sbb.append(",");
}
}
sb.append(" ) values ("+sbb.toString()+")");

//System.out.println(sb.toString());
return sb.toString();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}
/**
* 对象转化sql
* o 对象 User
* objName对象名称入User 
* whereSql 值如 "detailId='"+c.getDetailId()+"'"
*/
public String objectChangeDeleteHql(Object o,String objName,String whereSql){
try{
List list= getFiledsInfo(o);
// StringBuffer sb=new StringBuffer("update "+o.getClass().getSimpleName()+" set ");
StringBuffer sb=new StringBuffer("delete from "+objName+"");
sb.append(" where "+whereSql);
//System.out.println(sb.toString());
return sb.toString();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}


/**
* 对象转化sql
* o 对象 User
* objName对象名称入User 
* whereSql 值如 "detailId='"+c.getDetailId()+"'"
*/
public String objectChangeUpdateHql(Object o,String objName,String whereSql){
try{
List list= getFiledsInfo(o);
// StringBuffer sb=new StringBuffer("update "+o.getClass().getSimpleName()+" set ");
StringBuffer sb=new StringBuffer("update "+objName+" set ");

for(int i=1;i<list.size();i++){//跳过id这个字段
Map<String,Object> mp=(Map<String,Object>)list.get(i);
String type=mp.get("type")+"";
String value=mp.get("value")+"";
if("null".equals(value)){
value="";
}
//mp.toString().replaceAll("null", "");
if("Integer".equals(type)){
sb.append(mp.get("name")+"="+value);
}else if("String".equals(type)){
sb.append(mp.get("name")+"='"+value+"'");
}else if("Double".equals(type)){
sb.append(mp.get("name")+"="+mp.get("value"));
}else if("Date".equals(type)){
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append(mp.get("name")+"='"+sf.format((Date)mp.get("value"))+"'");
}else{
sb.append(mp.get("name")+"='"+value+"'");
}
//sb.append(mp.get("name")+"=?");
if(i==list.size()-1){

}else{
sb.append(",");
}
}
sb.append(" where "+whereSql);
//System.out.println(sb.toString());
return sb.toString();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}

/**
* 对象转化sql
* o 对象 User
* objName对象名称入User 
* whereSql 值如 "detailId='"+c.getDetailId()+"'"
*/
public String objectChangeSelectHql(Object o,String objName,String whereSql){
try{
List list= getFiledsInfo(o);
// StringBuffer sb=new StringBuffer("update "+o.getClass().getSimpleName()+" set ");
StringBuffer sb=new StringBuffer("select ");
for(int i=0;i<list.size();i++){//跳过id这个字段
Map<String,Object> mp=(Map<String,Object>)list.get(i);
if(i<list.size()-1){
sb.append(mp.get("name")+",");
}else{
sb.append(mp.get("name")+" ");
}

}
sb.append(" from  "+objName);
return sb.toString();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}
/**
* 对象转化sql
* o 对象 User
* objName对象名称入User 
* antherName User u 穿入值为 u
*/
public String objectChangeSelectHqlByAntherName(Object o,String objName,String antherName){
try{
List list= getFiledsInfo(o);
// StringBuffer sb=new StringBuffer("update "+o.getClass().getSimpleName()+" set ");
StringBuffer sb=new StringBuffer("select ");
for(int i=0;i<list.size();i++){//跳过id这个字段
Map<String,Object> mp=(Map<String,Object>)list.get(i);
if(i<list.size()-1){
sb.append(antherName+"."+mp.get("name")+",");
}else{
sb.append(antherName+"."+mp.get("name")+" ");
}

}
sb.append(" from  "+objName);
return sb.toString();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "";
}

/** 
   * 获取属性类型(type),属性名(name),属性值(value)的map组成的list 
   * */  
  public  List getFiledsInfo(Object o){  
  Field[] fields=o.getClass().getDeclaredFields();  
       String[] fieldNames=new String[fields.length];  
       List list = new ArrayList();  
       Map<String,Object> infoMap=null;  
   for(int i=0;i<fields.length;i++){  
       infoMap = new HashMap<String,Object>();  
       infoMap.put("type", fields[i].getType().getSimpleName());
      // infoMap.put("type", fields[i].getType().toString());  
       infoMap.put("name", fields[i].getName());  
       infoMap.put("value", getFieldValueByName(fields[i].getName(), o));  
       list.add(infoMap);  
   }  
   return list;  
  }  
  
  /** 
   * 根据属性名获取属性值 
   * */  
     private Object getFieldValueByName(String fieldName, Object o) {  
         try {    
             String firstLetter = fieldName.substring(0, 1).toUpperCase();    
             String getter = "get" + firstLetter + fieldName.substring(1);    
             Method method = o.getClass().getMethod(getter, new Class[] {});    
             Object value = method.invoke(o, new Object[] {});    
             return value;    
         } catch (Exception e) {    
             return null;    
         }    
     }   
     
     /** 
      * 获取属性名数组 
      * */  
     private String[] getFiledName(Object o){  
      Field[] fields=o.getClass().getDeclaredFields();  
          String[] fieldNames=new String[fields.length];  
      for(int i=0;i<fields.length;i++){  
          System.out.println(fields[i].getType());  
          fieldNames[i]=fields[i].getName();  
      }  
      return fieldNames;  
     }  
     
     
     /** 
      * 获取对象的所有属性值,返回一个对象数组 
      * */  
     public Object[] getFiledValues(Object o){  
      String[] fieldNames=this.getFiledName(o);  
      Object[] value=new Object[fieldNames.length];  
      for(int i=0;i<fieldNames.length;i++){  
          value[i]=this.getFieldValueByName(fieldNames[i], o);  
      }  
      return value;  
     } 

猜你喜欢

转载自blog.csdn.net/qq_34168760/article/details/80859142