# 2.0 chain 使用方式
在 2.0的 chain可以主表和子表的实体查询,这在实际的业务场景中能够很大增加开发效率
// 注意字段定义 _Field 开头的代表是单个字段,一般用在单个类型定义的时候
// 例如:.eq(usersChain._ageId(),1)
Users users = new Users();
users.setAgeId(1L);
users.setUserName("6");
UsersAge usersAge = new UsersAge();
usersAge.setAgeName("ageName6");
// 原模型 增加 @JoinChainModel 注解
// 生成规则是 原模型名称后+ Chain 比如说 原模型名字叫 Users 生成的类就叫做 UsersChain
UsersChain usersChain = UsersChain.create()
.setEntity(users);
UsersAgeChain ageChain = UsersAgeChain.create()
.setEntity(usersAge);
List<UsersVo> usersVoList = Joins.chain(usersChain)
.initEntityCondition(usersChain, ageChain)
.leftJoin(ageChain._id(), usersChain._ageId())
.joinList(UsersVo.class);
// 生成SQL
SELECT
users.user_name,users.create_time,users.age_id,users.content_json,users.user_id
FROM users as users
LEFT JOIN users_age as users_age ON users_age.id = users.age_id
WHERE (users.user_name='6' AND users.age_id=1 AND users_age.age_name='ageName6')
# lambda使用方式
# 根据实体不为空的数据查询
JoinLambdaWrapper<Users> wrapper = new JoinLambdaWrapper<>(new Users().setUserName("name啊")
.setUserId(1L));
// 执行查询
usersService.joinList(wrapper,UsersVo.class);
// 执行SQL
select
users.user_id,
users.user_name
from users users
where
users.user_id = 1
and users.user_name = 'name啊'