WARNING
2.0的chain模型不支持
# push*Join 和 @JoinField 方便构建join查询方法(1.3.3版本之后)
第一步 在查询返回的模型中添加对象或者集合添加注解 @JoinField
注解参数:
@param masterModelClass() 主表对象class
@param sunModelClass() 子表对象class
@param masterModelField 主表关联字段,注意不要写别名啥的,就写实体类中的属性名
@param sunModelField 子表关联字段,注意不要写别名啥的,就写实体类中的属性名
@param sunAlias 名,如果你关联的对象中有两个相同的表,就需要显示填写一下别名,否则不用写
@param relevancyType 关联类型推荐使用RelevancyType类中常量
@JoinField(masterModelClass = Users.class, masterModelField = "ageId",
sunModelClass = UsersAge.class, sunModelField = "id", relevancyType = RelevancyType.ONT_TO_ONE,
sunAlias = "t1")
private UsersAge usersAge;
@JoinField(masterModelClass = Users.class, masterModelField = "ageId",
sunModelClass = UsersAge.class, sunModelField = "id", relevancyType = RelevancyType.MANY_TO_MANY,
sunAlias = "t2")
private List<UsersAge> usersAges;
// 添加完注解之后,就可以用push*Join方法,添加进去
pushLeftJoin(UsersVo::getUsersAge)
List<UsersVo> list = Joins.of(Users.class)
.pushLeftJoin(UsersVo::getUsersAge)
.joinList(UsersVo.class);
// 如果你添加完这个join之后,还需要再添加条件之类的
List<UsersVo> list = Joins.of(Users.class)
// 就需要用该参数,指定一下构建的泛型class
.pushLeftJoin(UsersVo::getUsersAge, UsersAge.class)
.eq(UsersAge::getId, Users::getAgeId).end()
.joinList(UsersVo.class);
// 执行SQL
SELECT
users.user_name,users.create_time,users.age_id,users.content_json,users.user_id, t1.age_doc as t1_ageDoc , t1.age_name as t1_ageName , t1.create_time as t1_createTime , t1.content_json_age as t1_contentJsonAge , t1.id as t1_id
FROM users as users
LEFT JOIN users_age as t1 ON t1.id = users.age_id
// 返回对象
UsersVo(....
usersAge=UsersAge(id=1, ageDoc=90, ageName=90, createTime=Fri Dec 17 13:11:11 CST 2021, contentJsonAge=TestUserJson(name=456, content=呜呜呜)))