使用mybatisPlus的queryWrapper做左联接,内联接

示例展示了如何在Java的Service层利用MybatisPlus的QueryWrapper创建一个复杂的SQL查询,包括左连接、内连接以及设置查询条件,查询用户信息及相关社保数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在service层生成使用mybatisplus的querywapper的Java代码

SELECT
bs_user.id,
bs_user.mobile,
bs_user.username,
bs_user.password,
bs_user.enable_state,
ss_user_social_security.user_id,
ss_user_social_security.enterprises_pay_social_security_this_month,
ss_user_social_security.enterprises_pay_the_provident_fund_this_month,
ss_user_social_security.participating_in_the_city_id,
ss_user_social_security.social_security_type,
ss_user_social_security.household_registration_type,
ss_user_social_security.social_security_base,
ss_user_social_security.industrial_injury_ratio
FROM
bs_user
LEFT JOIN
ss_user_social_security
ON
bs_user.id = ss_user_social_security.user_id
INNER JOIN
ss_company_settings
ON
bs_user.company_id = ss_company_settings.company_id
WHERE
ss_company_settings.company_id = 1 前面是表结构和vo对象

好的,你可以参考下面的代码来执行这个查询。使用 Mybatis-Plus 的 QueryWrapper 可以简化 SQL 的构建,并且可以避免写关键字拼写错误的问题。假设你已经有了对应的 VO 类,其中包含上述查询结果中的所有属性和它们的 Getter/Setter 方法,可以参考下面的代码:

// 创建一个 QueryWrapper 对象
QueryWrapper<UserVO> queryWrapper = new QueryWrapper<>();

// 设置要查询的字段
queryWrapper.select("bs_user.id", "bs_user.mobile", "bs_user.username", "bs_user.password", 
    "bs_user.enable_state", "ss_user_social_security.user_id", 
    "ss_user_social_security.enterprises_pay_social_security_this_month", 
    "ss_user_social_security.enterprises_pay_the_provident_fund_this_month", 
    "ss_user_social_security.participating_in_the_city_id", 
    "ss_user_social_security.social_security_type", "ss_user_social_security.household_registration_type", 
    "ss_user_social_security.social_security_base", "ss_user_social_security.industrial_injury_ratio");

// 添加关联表
queryWrapper.leftJoin("ss_user_social_security", "bs_user.id = ss_user_social_security.user_id");
queryWrapper.innerJoin("ss_company_settings", "bs_user.company_id = ss_company_settings.company_id");

// 添加查询条件
queryWrapper.eq("ss_company_settings.company_id", 1);

// 调用 service 层的方法执行查询
List<UserVO> userList = userService.list(queryWrapper);

这段代码中,我们使用了 QueryWrapper 对象来构建 SQL 语句。通过调用 select 和 join 等方法,我们可以设置要查询的字段和添加关联表。最后,使用 eq 和其他方法来设置查询条件。最后,调用 list 方法执行查询,并将结果存储在一个 List 对象中返回。注意要根据具体需要来替换上述代码中的 VO 类和 service 调用方法。

MyBatis-Plus(简称MP)是基于MyBatis进行封装的增强工具,为简化开发、提高效率而生。它提供了许多常用的功能和特性,其中就包括关联查询和分页功能。 在MyBatis-Plus中进行关联查询需要使用Wrapper类,例如使用LambdaQueryWrapper可以轻松实现对多表进行关联查询。关联查询的语法格式如下: ``` LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getId, 1) .leftJoin(UserRole.class, UserRole::getUserId, User::getId) .eq(UserRole::getRoleId, 1); List<User> userList = userService.list(wrapper); ``` 其中,leftJoin()方法表示左连接另一张表,eq()方法用于添加条件,list()方法用于执行查询。 关于分页,MyBatis-Plus提供了Page类,我们可以使用它来实现分页功能。首先需要创建一个Page对象,并指定当前页和每页显示的记录数,然后将其作为参数传入对应的查询方法中。示例代码如下: ``` int currentPage = 1; int pageSize = 10; Page<User> page = new Page<>(currentPage, pageSize); LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getName, "Tom"); userService.page(page, wrapper); List<User> userList = page.getRecords(); ``` 其中,Page构造函数的第一个参数表示当前页数,第二个参数表示每页显示的记录数。在查询方法中,我们将Page对象和查询条件作为参数传入,然后通过page.getRecords()方法获取查询结果列表。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值