JdbcConfig.java

/*
 * SPDX-FileCopyrightText: 2025 kaumei.io
 * SPDX-License-Identifier: Apache-2.0
 */
package io.kaumei.jdbc.annotation.config;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.CLASS)
@Target({ElementType.TYPE})
public @interface JdbcConfig {
    /**
     * The default suffix for generated implementation classes.
     */
    String DEFAULT_GENERATED_CLASS_SUFFIX = "$Jdbc";

    Class<?> parent() default void.class;

    Class<?>[] converter() default {};

    // ------------------------------------------------------------------------

    /**
     * Suffix for generated implementation classes.
     */
    String generatedClassSuffix() default DEFAULT_GENERATED_CLASS_SUFFIX;

    // ------------------------------------------------------------------------

    /**
     * How generated values are returned.
     */
    GeneratedValues returnGeneratedValues() default GeneratedValues.DEFAULT;

    // ------------------------------------------------------------------------

    /**
     * Maximum number of JDBC placeholders produced by one array or list expansion.
     */
    int maxCollectionPlaceholders() default 1_000;

    /**
     * Maximum total number of JDBC placeholders in one generated method call.
     */
    int maxTotalPlaceholders() default 2_000;

    enum GeneratedValues {
        /**
         * Use the configured default behaviour.
         */
        DEFAULT,

        /**
         * Return JDBC generated keys.
         */
        GENERATED_KEYS,

        /**
         * Return values from the SQL query result.
         */
        EXECUTE_QUERY
    }

    // ------------------------------------------------------------------------

}