private String inserSql(List<Object> params, Object object) throws Exception {
        StringBuilder sql = new StringBuilder();
        sql.append("INSERT INTO ");
        Class<?> cl = object.getClass();
        // Get table name annnotation
        Table table = cl.getAnnotation(Table.class);
        if (table == null) {
            throw new AnnotaionParseException("Count not find table annotation in model class");
        }
        sql.append(table.name());

        StringBuilder values = new StringBuilder();
        sql.append(" (");
        values.append(" (");
        for (Field field : cl.getDeclaredFields()) {
            // Get column annotation
            Column column = field.getAnnotation(Column.class);
            if (column != null) {
                try {
                    String methodName = getFieldGetMethod(field);
                    Method method = cl.getDeclaredMethod(methodName);
                    Object obj = method.invoke(object);

                    if (obj != null) {
                        sql.append(column.column()).append(",");
                        values.append("?,");
                        params.add(obj);
                    }
                } catch (NoSuchMethodException e) {
                    LOGGER.error(e.getMessage());
                } catch (IllegalAccessException e) {
                    LOGGER.error(e.getMessage());
                } catch (IllegalArgumentException e) {
                    LOGGER.error(e.getMessage());
                } catch (InvocationTargetException e) {
                    LOGGER.error(e.getMessage());
                }
            }
        }
        sql.deleteCharAt(sql.length() - 1).append(")");
        values.deleteCharAt(values.length() - 1).append(")");

        sql.append(" VALUES ").append(values);
        return sql.toString();
    }