当前位置: 首页 > news >正文

以list为输入条件,查询数据库表,java中的mapper层和mybatis层应该怎么写?

根据一个 List 中的两个字段 rangeCode 和 unitcd,查询数据库表 model_engineering_spatial_unit。这个需求在 Java + MyBatis 项目中非常常见,下面我将为你详细写出 Mapper 接口(Java) 和 MyBatis XML 映射文件 的写法。

✅ 前提说明实体类:PlanSchemeProductionGongkuangStatus

public class PlanSchemeProductionGongkuangStatus {private String rangeCode;private String unitcd;// getter and setter...
}

查询目标表:model_engineering_spatial_unit
假设你要查询的是:

SELECT *
FROM model_engineering_spatial_unit
WHERE range_code = ? AND unitcd = ?

对于多个对象的情况,是多个 (range_code, unitcd) 对组合。

✅ Mapper 层接口定义(Java)

import java.util.List;public interface SpatialUnitMapper {/*** 根据 rangeCode 和 unitcd 列表查询数据*/List<ModelEngineeringSpatialUnit> queryByRangeAndUnit(List<PlanSchemeProductionGongkuangStatus> conditions);
}

✅ MyBatis XML 映射文件(XML)(重点)

<!-- Mapper Namespace: com.example.mapper.SpatialUnitMapper -->
<mapper namespace="com.example.mapper.SpatialUnitMapper"><select id="queryByRangeAndUnit" resultType="com.example.model.ModelEngineeringSpatialUnit">SELECT *FROM model_engineering_spatial_unit<where><foreach collection="conditions" item="item" separator=" OR ">(range_code = #{item.rangeCode} AND unitcd = #{item.unitcd})</foreach></where></select></mapper>

✅ 使用说明
• 遍历传入的 List。
•每个元素取出 rangeCode 和 unitcd,作为一组条件拼接成 (range_code = ? AND unitcd = ?)。
•多组条件用 OR 连接,最终实现批量查询。
• 标签会自动处理 AND / OR 开头的问题,避免 SQL 错误。

✅ 示例调用代码(Service 层)

@Service
public class SpatialUnitService {@Autowiredprivate SpatialUnitMapper spatialUnitMapper;public void testQuery() {List<PlanSchemeProductionGongkuangStatus> conditions = new ArrayList<>();conditions.add(new PlanSchemeProductionGongkuangStatus("R001", "U001"));conditions.add(new PlanSchemeProductionGongkuangStatus("R002", "U002"));List<ModelEngineeringSpatialUnit> result = spatialUnitMapper.queryByRangeAndUnit(conditions);// 输出结果result.forEach(System.out::println);}
}

✅ 如果你使用的是 MyBatis Plus如果你使用的是 MyBatis Plus,可以结合 QueryWrapper 或 LambdaQueryWrapper 实现动态构建查询条件,但上面这种方式更适合直接传递 List 对象进行多条件匹配。

✅ 小贴士
场景 推荐方式
单条记录查询 selectOne()
多个 (rangeCode, unitcd) 组合查询 使用 动态生成多个 OR 条件
查询性能优化 确保 range_code 和 unitcd 字段上有索引

相关文章:

  • C++11多线程内存模型:从入门到精通
  • 配置DHCP服务(小白的“升级打怪”成长之路)
  • 基于电力载波的智能照明系统:技术优势与市场前景分析​
  • Flask 中 make_response 与直接返回字符串的深度解析
  • 介绍下分布式ID的技术实现及应用场景
  • 使用 Visual Studio 创建安装包的完整指南
  • ​​网络工程师知识点精讲与例题解析:数据链路层技术​​
  • typescript vs go vs rust
  • linux USB Function Filesystem介绍
  • AI自动生成复杂架构图,流程图,思维导图
  • Model 复现系列(二)ACT-Plus-Plus Mobile ALOHA
  • linux常用设置
  • 前端技术栈加持:用 SpreadJS 实现分权限管理
  • REST接口/RPC
  • 高防IP+端口隐身技术——彻底解决扫描攻击
  • GIT SSH方式克隆远端仓库到本地
  • Spring IoC容器原理深度解析:源码级剖析(通俗易懂版)
  • 分库分表之数据库分片分类
  • Android Framework 调用栈
  • 【力扣每日一题】划分数组并满足最大差限制
  • 网站建设价值/google play store
  • wordpress 多站点建站教程/国家卫生健康委
  • 天河区营销型网站建设/手机百度高级搜索入口
  • jsp做网站视频教程/什么是电商?电商怎么做
  • 软件ui的设计流程是什么/重庆seo关键词优化服务
  • 在网站开发中如何设置用户登录/常熟seo网站优化软件