# 2.0 chain 使用方式
// 原模型 增加 @JoinChainModel 注解
// 生成规则是 原模型名称后+ Chain 比如说 原模型名字叫 Users 生成的类就叫做 UsersChain
UsersChain usersChain = UsersChain.create();
UsersAgeChain ageChain = UsersAgeChain.create();
QueryWrapper<Users> wrapper = new QueryWrapper<>();
wrapper.eq("user_id","666");
// 注意字段定义 _Field 开头的代表是单个字段,一般用在单个类型定义的时候
// 例如:.eq(usersChain._ageId(),1)
List<UsersVo> usersVoList = Joins.chain(usersChain)
.selectAs(() -> {
return usersChain.userId().userName().createTime();
})
.leftJoin(ageChain._id(), usersChain._ageId())
.changeQueryWrapper(usersChain,wrapper)
.joinList(UsersVo.class);
// 生成SQL
SELECT
users.user_id,
users.user_name,
users.create_time
FROM
users AS users
LEFT JOIN users_age AS users_age ON users_age.id = users.age_id
WHERE
( ( users.user_id = '666' ) )
# lambda使用方式
# changeQueryWrapper 转换条件构造器
WARNING
转换查询Wrapper 会把 查询条件,group,order by,having转换 注意该方法无法给 多个入参添加别名,例如 orderByDesc("id","id2") 这种情况下别名就会添加错误
QueryWrapper<Users> wrapper1 = new QueryWrapper<>();
wrapper1.eq("user_id", 1)
.and(w -> {
w.like("user_id", 2).or()
.le("user_id", 34);
})
.orderByDesc("user_id")
.groupBy("user_id")
.having("1={0}", 1);
Joins.of(Users.class)
.changeQueryWrapper(wrapper1).joinList(UsersVo.class);
// SQL
SELECT users.create_time, users.content_json, users.user_id, u_age.age_doc, u_age.age_name, u_age.id, u_age.content_json_age, u_age.id AS ageTableId, '1' AS mpnb, sum(u_age.id) AS ageIds
FROM users AS users
LEFT JOIN users_age AS u_age
ON u_age.id = users.age_id
WHERE (users.user_id = 1 AND (user_id LIKE '%2%' OR user_id <= 34)) GROUP BY users.user_id HAVING 1 = 1 ORDER BY users.user_id DESC;