【Java 】实用方法

1.根据实体类获得想要的字段,适用于编写通用方法

    /**  
     * 获取属性名数组  (工具方法)
     * */  
    private static String[] getFiledName(Object o){  
        Field[] fields=o.getClass().getDeclaredFields();  
        String[] fieldNames=new String[fields.length];  
        for(int i=0;i<fields.length;i++){  
            fieldNames[i]=fields[i].getName();  
        }  
        return fieldNames;  
    } 
    /* 根据属性名获取属性值  (工具方法)
     * */  
    private static 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;    
        }    
    }  
    
    
   // 根据传过来的实体及数据库名字自动形成sql并输出

    public String  insert(Object t,String sqlname) {
        StringBuilder ObjName = new StringBuilder();
        StringBuilder ObjValue = new StringBuilder();
        String[] fieldNames = getFiledName(t);
          for(int j=0 ; j<fieldNames.length ; j++){     //遍历所有属性
                   String name = fieldNames[j];    //获取属性的名字
                   Object value = getFieldValueByName(name,t);
                   if (value == null || "".equals(value) || "null".equals(value)) //这一步是为了剔除掉不未赋值的字段,避免sql冗余,且加强了实体类的复用率
                   {
                       continue;
                   }
                   ObjName.append(name);
                   ObjValue.append(value);
                
                    ObjName.append(",");
                    ObjValue.append("','");
              
            }
          ObjName=ObjName.deleteCharAt(ObjName.length() - 1);
          ObjValue=ObjValue.delete(ObjValue.length() - 3,ObjValue.length());
            String sql="insert into "+sqlname+" ("+ObjName.toString()+") values ('"+ObjValue.toString()+"')";
            return sql;
    }
    
  // 修改方法

    public String update(Object t,int id,String sqlname) {
        
        StringBuilder ObjSetVal= new StringBuilder();
        String[] fieldNames = getFiledName(t);
         
          for(int j=0 ; j<fieldNames.length ; j++){     
                  StringBuilder ObjName = new StringBuilder();
                StringBuilder ObjValue = new StringBuilder();
                      //遍历所有属性
                   String name = fieldNames[j];    
                   //获取属性的名字
                   Object value = getFieldValueByName(name,t);
                   ObjName.append(name);
                   ObjValue.append(value);
                   if (value == null || "".equals(value) || "null".equals(value))
                   {
                       continue;
                   }
                   ObjSetVal.append(ObjName+"='"+ObjValue+"',");
            }
          ObjSetVal=ObjSetVal.deleteCharAt(ObjSetVal.length() - 1);
            String sql="update "+sqlname+" set "+ObjSetVal+" where id='"+id+"'";
            return sql;
   
    }
    
   // 删除方法

    public String delete(String ids,String sqlname) {
        String sql="delete from "+sqlname+" where id in ('"+ids.replace(",", "','")+"')";
            return sql;
  
    }

2.后台对图片的各种转换

前台向后台传图片分为两种方式

1.前台先把图片生成预览图把地址传到后台,这种方法就比较简单,后台只需要把他当字符串被动接受

2.前台把文件转出成Base64的数据流传到后台,主要说一下这种

// 这个方法大概意思就是,把数据流转化为图片并存储在项目的img文件夹下(D:\\Program Files\\Tomcat 8.0\\webapps\\),但是在数据库存的确实远程地址(http://xxx.com/img) 
public String  base64ToString(String base64String) {
        try {
            byte[] bytes1 = decoder.decodeBuffer(base64String);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            BufferedImage bi1 = ImageIO.read(bais);
            String name="/"+UUID.randomUUID().toString()+".jpg";
            String url=ServletActionContext.getServletContext().getRealPath("/img"); //获得项目下的绝对路径
            String HttpUrl=Jtconfig.domain; //获得服务器地址
            File w2 = new File(url+name);// 可以是jpg,png,gif格式
            ImageIO.write(bi1, "jpg", w2);// 不管输出什么格式图片,此处不需改动
            return HttpUrl+"img"+name;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
    //图片转64位
      public String get_b64_pic(String imgUrl) {
            //imgFile = "C:/Users/Administrator/Desktop/12.png";// 待处理的图片
            InputStream in = null;
            byte[] data = null;
            // 读取图片字节数组
            try {
              in = new FileInputStream(imgUrl);
              data = new byte[in.available()];
              in.read(data);
              in.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
            // 对字节数组Base64编码
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(data);// 返回Base64编码过的字节数组字符串
          }

 

posted @ 2020-10-27 14:43  Java·小白  阅读(106)  评论(0)    收藏  举报
返回顶部小火箭