All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mybatis.provider.Entity Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2020-2022 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.mybatis.provider;

import io.mybatis.provider.keysql.GenId;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.UnknownTypeHandler;

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

/**
 * 表对应的实体
 *
 * @author liuzh
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Entity {
  /**
   * 对应实体类
   */
  Class value();

  /**
   * 表名
   */
  @Retention(RetentionPolicy.RUNTIME)
  @Target(ElementType.TYPE)
  @interface Table {
    /**
     * 表名,默认空时使用对象名(不进行任何转换)
     */
    String value() default "";

    /**
     * 备注,仅用于在注解上展示,不用于任何其他处理
     */
    String remark() default "";

    /**
     * catalog 名称,配置后,会在表名前面加上 catalog 名称,规则为:catalog.schema.tableName,支持全局 mybatis.provider.catalog 配置
     */
    String catalog() default "";

    /**
     * schema 名称,配置后,会在表名前面加上 schema 名称,规则为:catalog.schema.tableName,支持全局 mybatis.provider.schema 配置
     */
    String schema() default "";

    /**
     * 名称规则、样式,同时应用于表名和列名,不想用于表名时,直接指定表名 {@link #value()}即可。
     * 

* 2.0版本之前默认为 {@link Style#NORMAL}, 2.0版本之后默认使用 {@link Style#LOWER_UNDERSCORE} *

* 可以通过 {@link Style#DEFAULT_STYLE_KEY} = 格式 来修改默认值 */ String style() default ""; /** * 使用指定的 */ String resultMap() default ""; /** * 自动根据字段生成 */ boolean autoResultMap() default false; /** * 属性配置 */ Prop[] props() default {}; /** * 排除指定父类的所有字段 */ Class[] excludeSuperClasses() default {}; /** * 排除指定类型的字段 */ Class[] excludeFieldTypes() default {}; /** * 排除指定字段名的字段 */ String[] excludeFields() default {}; } /** * 属性配置,优先级高于 {@link io.mybatis.config.ConfigHelper } 提供的配置 */ @interface Prop { /** * 属性名 */ String name(); /** * 属性值 */ String value(); } /** * 排除列 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @interface Transient { } /** * 列名 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @interface Column { /** * 列名,默认空时使用字段名(不进行任何转换) */ String value() default ""; /** * 备注,仅用于在注解上展示,不用于任何其他处理 */ String remark() default ""; /** * 标记字段是否为主键字段 */ boolean id() default false; /** * 主键策略1,优先级1:是否使用 JDBC 方式获取主键,优先级最高,设置为 true 后,不对其他配置校验 */ boolean useGeneratedKeys() default false; /** * 主键策略2,优先级2:取主键的 SQL,当前SQL只能在 INSERT 语句执行后执行,如果想要在 INSERT 语句执行前执行,可以使用 {@link #genId()} */ String afterSql() default ""; /** * 主键策略3,优先级3:Java 方式生成主键,可以和发号器一类的服务配合使用 */ Class genId() default GenId.NULL.class; /** * 执行 genId 的时机,仅当 {@link #genId()} 不为空时有效,默认插入前执行 */ boolean genIdExecuteBefore() default true; /** * 排序方式,默认空时不作为排序字段,只有手动设置 ASC 和 DESC 才有效 */ String orderBy() default ""; /** * 排序的优先级,多个排序字段时,根据该值确定顺序,数值越小优先级越高 */ int orderByPriority() default 0; /** * 可查询 */ boolean selectable() default true; /** * 可插入 */ boolean insertable() default true; /** * 可更新 */ boolean updatable() default true; /** * 数据库类型 {, jdbcType=VARCHAR} */ JdbcType jdbcType() default JdbcType.UNDEFINED; /** * 类型处理器 {, typeHandler=XXTypeHandler} */ Class typeHandler() default UnknownTypeHandler.class; /** * 小数位数 {, numericScale=2} */ String numericScale() default ""; /** * 属性配置 */ Prop[] props() default {}; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy