package com.github.yulichang.common; import com.baomidou.mybatisplus.core.conditions.SharedString; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; /** * 自定义连表sql *
* 不使用表别名: *
* //注解 * @Select("select user.*,user_address.tel from user left join user_address on user.id = user_address.user_id ${ew.customSqlSegment}") * * //或者xml * * * //mapper * UserDTO userLeftJoin(@Param(Constants.WRAPPER) Wrapper*queryWrapper); * * wrapper使用方法: * UserDTO userDTO = userMapper.userLeftJoin(new JoinLambdaWrapper () * .eq(UserDO::getId, "1") * .eq(UserAddressDO::getUserId, "1")); * * 对应生成sql: * select user.*, user_address.tel * from user left join user_address on user.id = user_address.user_id * WHERE ( * user.id = ? * AND user_address.user_id = ?) *
* 使用别名: * *
* //注解 * @Select("select u.*,ua.tel from user u left join user_address ua on u.id = ua.user_id ${ew.customSqlSegment}") * * //或者xml * * * //mapper * UserDTO userLeftJoin(@Param(Constants.WRAPPER) Wrapper*queryWrapper); * * wrapper使用方法: * UserDTO userDTO = userMapper.userLeftJoin(new JoinLambdaWrapper () * .alias(UserDO.class, "u") //如果sql使用别名,需要再此定义别名 * .alias(UserAddressDO.class, "ua") //如果sql使用别名,需要再此定义别名 * .eq(UserDO::getId, "1") * .eq(UserAddressDO::getUserId, "1")); * * 对应生成sql: * select u.*, ua.tel * from user u left join user_address ua on u.id = ua.user_id * WHERE ( * u.id = ? * AND ua.user_id = ?) *
* 如需单独使用只需拷贝以下类 * {@link com.github.yulichang.common.JoinLambdaWrapper} * {@link com.github.yulichang.common.JoinAbstractWrapper} * {@link com.github.yulichang.common.JoinAbstractLambdaWrapper} * {@link com.github.yulichang.wrapper.interfaces.Compare} * {@link com.github.yulichang.wrapper.interfaces.Func} * {@link com.github.yulichang.toolkit.LambdaUtils} *
*
* @author yulichang
* @since 1.0.9
*/
public class JoinLambdaWrapper