# DB注解包说明文档 ## 概述 `com.poyee.annotation.db`包中包含了一系列用于数据库操作的注解,这些注解主要用于简化SQL查询构建、表关联、条件过滤、排序和聚合操作等。这些注解通常与MyBatis-Plus框架配合使用,用于增强其功能。 ## 注解列表 ### 1. Select **用途**:用于指定查询字段 **属性**: - `table`:指定表类 - `alias`:表别名,默认为空 - `fieldName`:字段名,默认为空 - `caseWhen`:聚合等条件取值,默认为空数组 - `distinct`:是否去重,默认为false **示例**: ```java @Select(table = UserEntity.class, fieldName = "username", distinct = true) private String username; ``` ### 2. Join **用途**:用于外连接查询 **属性**: - `table`:关联表 - `on`:关联条件 - `alias`:别名 **示例**: ```java @Join(table = "user_role", on = "user.id = user_role.user_id", alias = "ur") private String roleInfo; ``` ### 3. LeftJoin **用途**:用于左连接查询 **属性**: - `table`:关联表 - `leftTable`:关联表(左表/主表),默认为void.class - `fieldName`:关联字段,默认为空 - `leftFieldName`:左表关联字段,默认为空 **示例**: ```java @LeftJoin(table = RoleEntity.class, leftTable = UserEntity.class, fieldName = "id", leftFieldName = "roleId") private String roleName; ``` ### 4. RightJoin **用途**:用于右连接查询 **属性**: - `table`:表名 - `on`:关联条件 - `alias`:别名 **示例**: ```java @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 **示例**: ```java @Where(table = UserEntity.class, field = "status", operator = FieldOperator.EQ) private String status; ``` ### 6. OrderBy **用途**:用于指定排序 使用到结果Dto 类的字段 **属性**: - `sortType`:排序方式,默认为ASC(升序) - `index`:顺序,默认为1 **示例**: ```java @OrderBy(sortType = OrderBySortEnums.DESC, index = 2) private Date createTime; ``` ### 7. Count **用途**:用于统计计数 **属性**: - `distinct`:是否去重,默认为false - `caseWhen`:条件取值,默认为空数组 **示例**: ```java @Count(distinct = true) @TableField("user_id") private Long userCount; ``` ### 8. Sum **用途**:用于求和 **属性**: - `caseWhen`:条件取值,默认为空数组 **示例**: ```java @Sum @TableField("amount") private Double totalAmount; ``` ### 9. CaseWhen **用途**:用于聚合等条件取值 **属性**: - `when`:条件,默认为空 - `then`:值,默认为空 - `isElse`:是否是else,默认为false - `valueType`:值类型,默认为CONSTANT **示例**: ```java @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构建,但也需要了解其底层实现原理,以便更好地使用