Skip to content

内置注解

全部在org.huiche.core.annotation包名下, 注意区分

@Table

用于实体类标注表信息,可选,若需要自定义表名,或使用huiche-apt则需要

属性说明
value自定义表名,一般不需要,若定义,优先级高于命名策略
database表上级(database/schema/catlog),一般不需要,定义后在生成SQL时会携带
comment表注释/说明,建议添加, 方便阅读, 可用于生成DDL

@Column

用于实体类属性标注列信息,可选,dao中xxxById系列方法依赖于实体类有唯一主键,需要使用@Column(primaryKey=true)设置,或者是如果列名为id且没有其他标注primaryKey的字段

属性说明
value自定义列名,一般不需要,若定义,优先级高于命名策略
primaryKey是否主键,用于dao的xxxById/byIds等方法,用于生成DDL
autoIncrement是否自增,仅主键时可标注,若定义为true,插入会自动回填数据库侧生成的值(非record),用于DDL生成
type仅用于DDL生成,自定义数据库类型,优先级高于默认类型推导
length仅用于DDL生成,自定义数据长度
scale仅用于DDL生成,自定义数据精度
unique仅用于DDL生成,是否唯一
nullable仅用于DDL生成,是否可为空
comment用于DDL生成,添加列注释/说明
defaultValue仅用于DDL生成,添加默认值
definition仅用于DDL生成,完全自定义列定义,若定义应包含除列名外所有信息,会忽略其他属性

@TablePrefix

用于包名,定义某个包名下所有实体类的表名前缀,仅当前package,不作用于子package

如给 com.demo.entity包添加@TablePrefix("sys_") com.demo.entity包下所有实体类,如com.demo.entity.ArticleInfo 自动解析的表名为 sys_article_info

属性说明
value自定义表名前缀

@Ref

用于标注VO/DTO对象的属性,标记其对应的表|实体类,

查询结果为VO/DTO时,如果查询的sql中selection包含多个同名列,可以使用别名区分,也可以使用@Ref标注对应哪个

属性说明
entity对应实体类,如标注@Ref(Article.class), 则代表取值时,读取Article实体类对应表的对应列
table对应表名,不能与entity同时指定,指定则代表读取对应表的列
field指定属性名,会自动转换为列名,不指定默认使用当前VO类的属性名,如@Ref(field="title") String name; 会读取title,而不是name, 如果同时指定了entity,会比对获取entity对应的属性的列
nested是否嵌套属性,若查询了多个表, 如 SELECT user.*,book.* 可以返回
record UserVO(@Ref(nested=true)User user,@Ref(nested=true)Book book)
或者是
record UserVO(Long id,String name @Ref(nested=true) Book book)

用于标注 查询对象的属性, 指定比较符或多表关联查询, 存在相同属性时,可以指定具体哪个表

属性说明
entity对应实体类的表
table对应表名,不能与entity同时指定
field指定属性名
operator比较操作符,必须填写,传入枚举org.huiche.core.support.Operator
expression表达式,优先级最高,指定时,忽略entity/table/field,当作操作符左侧对象, 主要用于一些需要列进行运算后比较的场景

@FillOnInsert

标注在实体类属性上,插入时填充, 用于插入数据时,填充属性,可用于填充操作人,创建时间,租户id等

默认不会覆写数值, 如果插入对象对应属性原来有值,则不会进行填充,可以调整force属性改变

属性说明
value传入org.huiche.core.support.Generator的实现类,且注册在配置中,实现generateOnInsert方法
force是否强制填充,默认false,如果属性当前有值不为null,是否覆盖原有值,默认不覆盖,仅null时填充
populate是否回填属性到实体类,实体类使用record时无法回填,但不影响填充值插入数据库

@FillOnUpdate

标注在实体类属性上,更新时填充, 用于更新数据时,填充属性,可用于填充操作人,修改时间等

默认强制覆写数值,即便是更新对象对应属性原来有值,也会进行覆盖,可以调整force属性改变

属性说明
value传入org.huiche.core.support.Generator的实现类,且注册在配置中,实现generateOnUpdate方法
force是否强制填充,默认true,覆盖原有值,改为false时仅值为null时填充,是否null是判断当前更新对象,不是相对数据库的值

了解数据填充