public int executeSave(final T obj) throws Exception{
        Connection conn = null;
        PreparedStatement stmt = null;
        try{
            final Map<String, Object> map = new HashMap<String, Object>();
            ReflectionUtils.doWithFields(obj.getClass(), new ReflectionUtils.FieldCallback() {

                public void doWith(Field field) throws Exception
                {
                    String columnValue = getColumnValue(field);
                    if(null == columnValue){ // 如果该属性没有加column注解，则不插入数据库
                        return;
                    }
                    PrimaryKey pk = field.getAnnotation(PrimaryKey.class);
                    if(null != pk && !pk.insertable()){ // 如果是主键，并且设置为不需插入，则不插入数据库
                        return;
                    }
                    field.setAccessible(true);
                    map.put(columnValue, field.get(obj));
                }
            });
            
            String tablename = getTableValue(obj.getClass()); // 获取表名
            
            String sql = "insert into " + tablename + "(" + TextUtil.joinStrings(map.keySet(), ",") + ")" + " values(" + TextUtil.generatePlaceholders(map.size()) + ")";            
            
            conn = C3p0DbHelper.getConnection();
            stmt = conn.prepareStatement(sql);
            int i = 1;
            for(Object o : map.values()){
                stmt.setObject(i++, o);
            }
            logger.log(Level.INFO, "[executeSave]sql ==> " + sql);
            int result = stmt.executeUpdate();
            logger.log(Level.INFO, "[executeSave]result ==> " + result);
            return result;
        }catch(Exception ex){
            throw ex;
        }finally{
            C3p0DbHelper.closeJDBC(null, stmt, conn);
        }
        
    }