# 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啊'