【Mybatis-plus-join】 selectAs() 查询添加别名
【Mybatis-plus-join】 selectAs() 查询添加别名
Metadata
title: 【Mybatis-plus-join】 selectAs() 查询添加别名
date: 2023-01-22 19:18
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/Mybatis-plus-join
categories:
- Mybatis-plus-join
keywords:
- Mybatis-plus-join
description: 【Mybatis-plus-join】 selectAs() 查询添加别名
【Mybatis-plus-join】 selectAs() 查询添加别名
/*
selectAs(List<As<T>> columns)
selectAs(SFunction<T, ?> column, String alias)
查询并添加别名
*/
// 拿起来我们上面用的哪个实例。我现在需要给ageName给个别名 user_age_name
JoinLambdaWrapper<Users> wrapper = new JoinLambdaWrapper<>(Users.class);
wrapper.leftJoin(UsersAge.class,UsersAge::getId,Users::getAgeId)
.eq(UserAge::getAgeName,"95")
.selectAs(UserAge::getAgeName,"user_age_name")
// 在1.3.2版本后可以采用函数的方式写别名
.selectAs(UserAge::getAgeName,UsersVo::getUserAgeName)
.end();
// 执行查询
usersService.joinList(wrapper,UsersVo.class);
select
users.user_id,
users.user_name,
users_age.age_name as user_age_name
from users users
left join users_age users_age on users_age.id = users.age_id
where (
users_age.age_name = '95'
)
现在来个高级需求,我需要查询出users_age表中的两个字段并且需要加一个固定值
JoinLambdaWrapper<Users> wrapper = new JoinLambdaWrapper<>(Users.class);
wrapper.join(UsersAge.class)
.leftJoin(UsersAge::getId,Users::getAgeId)
.eq(UserAge::getAgeName,"95")
.selectAs((cb) -> {
cb.add(UserAge::getAgeName,"user_age_name")
.add(UserAge::getAgeDoc)
.addFunAlias(UserAge::getAgeName,UsersVo::getUserAgeName) // 该方法在1.3.2版本后支持
.add("mp永远滴神","mpnb")
.add("sum(users_age.id)","ageIdSum",false); // 这个为false就是代表不是字符串,会原样查询 在1.3.1版本后支持
}).end();
// 执行查询
usersService.joinList(wrapper,UsersVo.class);
// 执行SQL
select
users.user_id,
users.user_name,
users_age.age_name as user_age_name,
users_age.age_doc,
'mp永远滴神' as mpnb,
sum(users_age.id) as ageIdSum
from users users
left join users_age users_age on users_age.id = users.age_id
where (
users_age.age_name = '95'
)
这里需要注意啊,如果selectAs那个地方因为是函数接口,所以值是不可以改变的,如果是可变的那么可以采用
selectAs(Arrays.asList(
new As(UserAge::getAgeName,"user_age_name"),
new As(UserAge::getAgeDoc)
))
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论