JPA反射机制实现对象获取-2

/**
     * 用于获取Insert的字段映射累加
     * @return String
     */
    public String returnInsertColumnsDefine()
    {
        StringBuilder sb = new StringBuilder();
       
        List<String> list = columnMap.get(this.getClass());
        int i = 0;
       
        for (String column : list)
        {
            if (isNull(column))
            {
                continue;
            }
           
            if (i++ != 0)
            {
                sb.append(',');
            }
           
            sb.append("#{").append(column).append('}');
        }
        return sb.toString();
    }
   
    /**
     * 用于获取Update Set的字段累加
     * @return String
     */
    public String returnUpdateSet()
    {
        StringBuilder sb = new StringBuilder();
       
        List<String> list = columnMap.get(this.getClass());
        int i = 0;
       
        for (String column : list)
        {
            if (isNull(column))
            {
                continue;
            }
           
            if (i++ != 0)
            {
                sb.append(',');
            }
            
            sb.append(column).append("=#{").append(column).append('}');
        }
       
        return sb.toString();
    }
   
    public Integer getId()
    {
        return 0;
    }
   
    /**
     * 打印类字段信息
     */
    @Override
    public String toString()
    {
        Field[] fields = this.getClass().getDeclaredFields();
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (Field f : fields)
        {
            if (Modifier.isStatic(f.getModifiers()) || Modifier.isFinal(f.getModifiers()))
            {
                continue;
            }
              
            Object value = null;
           
            try
            {
                f.setAccessible(true);
                value = f.get(this);
            }
            catch (IllegalArgumentException e)
            {
                log.error(e);
            }
            catch (IllegalAccessException e)
            {
                log.error(e);
            }
           
            if (value != null)
            {
                sb.append(f.getName()).append('=').append(value).append(',');
            }
        }
       
        sb.append(']');
       
        return sb.toString();
    }
   
    /**
     * 列名判空处理
     *
     * @param String fieldname
     * @return boolean
     * @throws SecurityException  NoSuchFieldException  IllegalArgumentException
     * @since TBSC
     */
    private boolean isNull(String fieldname)
    {
        try
        {
            Field field = this.getClass().getDeclaredField(fieldname);
            return isNull(field);
        }
        catch (SecurityException e)
        {
            log.error(e);
        }
        catch (NoSuchFieldException e)
        {
            log.error(e);
        }
        catch (IllegalArgumentException e)
        {
            log.error(e);
        }
       
        return false;
    }
   
    /**
     * 列名判空处理
     *
     * @param Field field
     * @return boolean
     * @throws SecurityException  IllegalArgumentException  IllegalAccessException
     * @since TBSC
     */
    private boolean isNull(Field field)
    {
        try
        {
            field.setAccessible(true);
            return field.get(this) == null;
        }
        catch (SecurityException e)
        {
            log.error(e);
        }
        catch (IllegalArgumentException e)
        {
            log.error(e);
        }
        catch (IllegalAccessException e)
        {
            log.error(e);
        }
       
        return false;
    }

猜你喜欢

转载自mickey-hou.iteye.com/blog/1654641