15
0

DB.md 4.1 KB

DB注解包说明文档

概述

com.poyee.annotation.db包中包含了一系列用于数据库操作的注解,这些注解主要用于简化SQL查询构建、表关联、条件过滤、排序和聚合操作等。这些注解通常与MyBatis-Plus框架配合使用,用于增强其功能。

注解列表

1. Select

用途:用于指定查询字段

属性

  • table:指定表类
  • alias:表别名,默认为空
  • fieldName:字段名,默认为空
  • caseWhen:聚合等条件取值,默认为空数组
  • distinct:是否去重,默认为false

示例

@Select(table = UserEntity.class, fieldName = "username", distinct = true)
private String username;

2. Join

用途:用于外连接查询

属性

  • table:关联表
  • on:关联条件
  • alias:别名

示例

@Join(table = "user_role", on = "user.id = user_role.user_id", alias = "ur")
private String roleInfo;

3. LeftJoin

用途:用于左连接查询

属性

  • table:关联表
  • leftTable:关联表(左表/主表),默认为void.class
  • fieldName:关联字段,默认为空
  • leftFieldName:左表关联字段,默认为空

示例

@LeftJoin(table = RoleEntity.class, leftTable = UserEntity.class, fieldName = "id", leftFieldName = "roleId")
private String roleName;

4. RightJoin

用途:用于右连接查询

属性

  • table:表名
  • on:关联条件
  • alias:别名

示例

@RightJoin(table = "user_role", on = "user.id = user_role.user_id", alias = "ur")
private String roleInfo;

5. Where

用途:用于指定查询条件

属性

  • table:表名/别名(二选一)
  • alias:别名/表名(二选一),默认为空
  • field:字段名(与orFields二选一),默认为空
  • orFields:字段名数组(与field二选一),默认为空数组
  • columnType:字段类型,默认为STRING
  • operator:操作符,默认为EQ(等于)
  • isNull:是否为空,默认为false
  • isEnd:是否为结束条件,默认为false

示例

@Where(table = UserEntity.class, field = "status", operator = FieldOperator.EQ)
private String status;

6. OrderBy

用途:用于指定排序 使用到结果Dto 类的字段

属性

  • sortType:排序方式,默认为ASC(升序)
  • index:顺序,默认为1

示例

@OrderBy(sortType = OrderBySortEnums.DESC, index = 2)
private Date createTime;

7. Count

用途:用于统计计数

属性

  • distinct:是否去重,默认为false
  • caseWhen:条件取值,默认为空数组

示例

@Count(distinct = true)
@TableField("user_id")
private Long userCount;

8. Sum

用途:用于求和

属性

  • caseWhen:条件取值,默认为空数组

示例

@Sum
@TableField("amount")
private Double totalAmount;

9. CaseWhen

用途:用于聚合等条件取值

属性

  • when:条件,默认为空
  • then:值,默认为空
  • isElse:是否是else,默认为false
  • valueType:值类型,默认为CONSTANT

示例

@Count
@TableField("status")
private Long statusCount;

@CaseWhen(when = "status = 1", then = "1", valueType = CaseWhenValueTypeEnums.CONSTANT)
private Long activeCount;

使用场景

这些注解主要用于以下场景:

  1. 复杂查询构建:通过注解方式构建复杂的SQL查询,避免手写SQL
  2. 表关联:使用Join、LeftJoin、RightJoin等注解实现表关联
  3. 条件过滤:使用Where注解实现条件过滤
  4. 排序:使用OrderBy注解实现结果排序
  5. 聚合操作:使用Count、Sum等注解实现聚合操作
  6. 条件取值:使用CaseWhen注解实现条件取值

注意事项

  1. 这些注解通常需要与MyBatis-Plus框架配合使用
  2. 注解的使用需要遵循Java注解的规范
  3. 部分注解需要与其他注解(如TableField)一起使用才能生效
  4. 使用这些注解可以简化SQL构建,但也需要了解其底层实现原理,以便更好地使用