内置注解
全部在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) |
@Search
用于标注 查询对象的属性, 指定比较符或多表关联查询, 存在相同属性时,可以指定具体哪个表
| 属性 | 说明 |
|---|---|
| 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是判断当前更新对象,不是相对数据库的值 |
了解数据填充