com.poyee.annotation.db包中包含了一系列用于数据库操作的注解,这些注解主要用于简化SQL查询构建、表关联、条件过滤、排序和聚合操作等。这些注解通常与MyBatis-Plus框架配合使用,用于增强其功能。
用途:用于指定查询字段
属性:
table:指定表类alias:表别名,默认为空fieldName:字段名,默认为空caseWhen:聚合等条件取值,默认为空数组distinct:是否去重,默认为false示例:
@Select(table = UserEntity.class, fieldName = "username", distinct = true)
private String username;
用途:用于外连接查询
属性:
table:关联表on:关联条件alias:别名示例:
@Join(table = "user_role", on = "user.id = user_role.user_id", alias = "ur")
private String roleInfo;
用途:用于左连接查询
属性:
table:关联表leftTable:关联表(左表/主表),默认为void.classfieldName:关联字段,默认为空leftFieldName:左表关联字段,默认为空示例:
@LeftJoin(table = RoleEntity.class, leftTable = UserEntity.class, fieldName = "id", leftFieldName = "roleId")
private String roleName;
用途:用于右连接查询
属性:
table:表名on:关联条件alias:别名示例:
@RightJoin(table = "user_role", on = "user.id = user_role.user_id", alias = "ur")
private String roleInfo;
用途:用于指定查询条件
属性:
table:表名/别名(二选一)alias:别名/表名(二选一),默认为空field:字段名(与orFields二选一),默认为空orFields:字段名数组(与field二选一),默认为空数组columnType:字段类型,默认为STRINGoperator:操作符,默认为EQ(等于)isNull:是否为空,默认为falseisEnd:是否为结束条件,默认为false示例:
@Where(table = UserEntity.class, field = "status", operator = FieldOperator.EQ)
private String status;
用途:用于指定排序 使用到结果Dto 类的字段
属性:
sortType:排序方式,默认为ASC(升序)index:顺序,默认为1示例:
@OrderBy(sortType = OrderBySortEnums.DESC, index = 2)
private Date createTime;
用途:用于统计计数
属性:
distinct:是否去重,默认为falsecaseWhen:条件取值,默认为空数组示例:
@Count(distinct = true)
@TableField("user_id")
private Long userCount;
用途:用于求和
属性:
caseWhen:条件取值,默认为空数组示例:
@Sum
@TableField("amount")
private Double totalAmount;
用途:用于聚合等条件取值
属性:
when:条件,默认为空then:值,默认为空isElse:是否是else,默认为falsevalueType:值类型,默认为CONSTANT示例:
@Count
@TableField("status")
private Long statusCount;
@CaseWhen(when = "status = 1", then = "1", valueType = CaseWhenValueTypeEnums.CONSTANT)
private Long activeCount;
这些注解主要用于以下场景: