jdbc 對象插入數據庫的封裝

/**
  *把插入的數據封裝到一個對象裏面
  */
public static boolean insert(String table,Object obj){
       try {
           // 用於拼sql
           StringBuilder sb=new StringBuilder();
           Class cls=obj.getClass();
           //獲取字段
           Field[] fields=  cls.getDeclaredFields();
           Map<String,Object>map=new HashMap<>();
           // 拿到字段對應的值,而且放入map中
           for(Field f:fields){
               f.setAccessible(true);
               String key=f.getName();
               Object value=f.get(obj);
               if(value!=null) {
                   map.put(key, value);
               }
           }
            //拼接sql
           sb.append("insert into "+table+"(");
           List<String> key=new ArrayList<>();
           for(Map.Entry<String,Object> m:map.entrySet()){
               key.add(m.getKey());
           }
           for(int i=0;i<key.size()-1;i++){
               sb.append(key.get(i)+",");
           }
           sb.append(key.get(key.size()-1)+") values(");
           for(int i=0;i<key.size()-1;i++){
               sb.append("? , ");
           }
           sb.append("? )");
           Connection conn = getConnection();
           PreparedStatement ps=conn.prepareStatement(sb.toString());
           // insert ....values(?,?,?) 給站位符賦值
           for(int i=0;i<key.size();i++) {
               ps.setObject(i+1,key.get(i));
           }
           int result= ps.executeUpdate();
           return true?false:result>0;
       }catch (Exception e){
           e.printStackTrace();
       }

    return false;
}
相關文章
相關標籤/搜索