mybatis一个<select>标签中包含多个语句

在Springboot项目中,为减少多次数据库交互造成的资源浪费,作者通过在mapper.xml中使用同一个select标签包含两个不同的SQL查询,根据不同的条件(name1和name2)从同一张表中获取数据。查询结果被封装成一个集合并通过mapper接口与ServiceImpl.java交互,实现了单次数据库访问获取多条件数据的目标。

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

大家好,我是一名从事与java开发的小弟,在springboot项目中,遇到了一个接口需要去查询多次数据库中的同一张表,并将多次与数据库交互返回的数据封装到一起的情况;由于查询同一张表的条件不同,只能这样实现,这种方式大大的浪费了时间和资源,所以我想能不能只需要和数据库交互一次,就可以实现。所以我想能不能在<select>标签中包含多个语句然后返回一个集合形式,答案是可以的。

下边是我的实现方式:

mapper.xml


<resultMap id="id01" type="表a的返回值类型"/>
<resultMap id="id02" type="表a的返回值类型"/>

<select id="find" resultMap="id01,id02">
        SELECT * FROM 表a where name = ${name1};
        SELECT * FROM 表a where name = ${name2};
    </select>

mapper接口

List<对象a的数据类型> find(@Param("条件1")String name1,@Param("条件2")String name2);

ServiceImpl.java

List<对象a的数据类型> list = this.mapper.find(name1,name2);

以上就是我是实现方式,有不懂或疑问可以在评论区留言,一直在!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值