对象转条件
目标对象需要加上@OrderByTarget(实体类)
@OrderByTarget(实体类) 标记这个类的目标实体类
为什么要加这个?答:为了减少字段配置,默认是继承@OrderByTarget(实体类)的实体类
@OrderByTarget 属性介绍
名称 | 必须 | 说明 |
---|---|---|
value | 是 | 目标实体类 |
strict | 否 | true 开启严格模式,只有配置了@OrderBy|@OrderByColumn|OrderByAsField的字段才有用;默认非严格模式 |
字段支持那些值?
支持 0 1和 true false;0 false 代表倒序;1 true 代表升序
@OrderBy 属性介绍
名称 | 必须 | 说明 |
---|---|---|
target | 否 | 目标实体类,可不配置,默认和@OrderByTarget(实体类)一样 |
property | 否 | 目标实体类的属性名,如果和实体类字段一样,则可忽略 |
storey | 否 | target实体类的存储层级 |
@OrderByAsField 属性介绍
名称 | 必须 | 说明 |
---|---|---|
target | 是 | 目标类 |
property | 否 | 目标类的属性名,如果字段一样 可以不配置 |
用于指定列(用于select .as(XXX::getxxx()的情况))
@OrderByColumn 属性介绍
名称 | 必须 | 说明 |
---|---|---|
value | 是 | 列名 |
用于指定列(用于select .as("xxx"的情况)),写死列名的情况
POJO 实例
java
import cn.xbatis.db.annotations.Condition;
import cn.xbatis.db.annotations.ConditionTarget;
import com.xbatis.core.test.DO.SysUser;
import lombok.Data;
import static cn.xbatis.db.annotations.Condition.Type.*;
@Data
@OrderByTarget(SysUser.class)
public class OrderBys {
private Integer id;
@OrderBy(property = SysUser.Fields.role_id)
private boolean roleId;
@OrderByColumn("id")
private Boolean createTime;
@OrderByAsField(target = XXX.class, property = XXX.Fields.id)
private Boolean createTime2;
}
如何用?
java
OrderBys orderBys = new OrderBys();
orderBys.setId(1);
orderBys.setRoleId(true);
Integer id = QueryChain.of(sysUserMapper)
.select(SysUser::getId)
.orderBy(orderBys)
.limit(1)
.returnType(Integer.class)
.get();