Skip to content

对象转条件

目标对象需要加上@OrderByTarget(实体类)

@OrderByTarget(实体类) 标记这个类的目标实体类

为什么要加这个?答:为了减少字段配置,默认是继承@OrderByTarget(实体类)的实体类

@OrderByTarget 属性介绍

名称必须说明
value目标实体类
stricttrue 开启严格模式,只有配置了@OrderBy|@OrderByColumn|OrderByAsField的字段才有用;默认非严格模式

字段支持那些值?

支持 0 1和 true false;0 false 代表倒序;1 true 代表升序

@OrderBy 属性介绍

名称必须说明
target目标实体类,可不配置,默认和@OrderByTarget(实体类)一样
property目标实体类的属性名,如果和实体类字段一样,则可忽略
storeytarget实体类的存储层级

@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();