mapper.xml详解

简介: java简单类型,int,String #{占位符,任意字符}pojo自定义对象 新增 #{pojo的属性名}hashmap

java简单类型,int,String #{占位符,任意字符}

pojo自定义对象 新增 #{pojo的属性名}

hashmap

<!--hashmap用例
  取值方式:#{map的key}
  注意:当使用map中不存在的key取值时,取值为空null。代码不报错  -->
  <select id="selectByMap" parameterType="map" resultType="user">
  SELECT * FROM USER WHERE SEX= #{sex} AND address LIKE 
  concat("%",#{address},"%")
&lt;/select&gt;

多参数的

接口方法定义:

/**多参数用例
  * @param sex
  * @param address
  */
  //public List<User> selectByParams(@Param("sex")String sex,@Param("address")String address);
  public List<User> selectByParams(String sex,String address);

xml实现:

<!--多参数用例
  parameterType可以省略
  (1).@Param:作用,把注解的对象,set放到map中去,key就是注解起的名字
  (2).使用#{index},index从0开始为第几个参数
   -->
  <select id="selectByParams" resultType="user">
  select * from user where sex=#{0} and address like concat("%",#{1},"%")
  </select>

1. resultType

Java简单类型

pojo自定义对象类型

hashmap

2. resultMap

resultType::在指定pojo对象接收 映射的结果集时, 需要要将 pojo对象的属性名 和 数据库表的字段名要一致。

如果有不一致的,则查询的改字段为null

解决名字不一致的方法:

方案一

<!--方案一: 给sql查询的字段as别名,别名和pojo对象的属性名一样  -->
  <select id="selectAll" resultType="car">
  <!-- select * from car -->
  select carId carId, name carName, userId userId from car
  </select>

方案二

<!--
  resultMap:对应自定义的哪个resultMap的id
   -->
  <select id="selectAll" resultMap="CarMap">
  select * from car
  select carId carId, name carName, userId userId from car
  </select>
  <!--
  type:把结果集映射到哪个对象上
  <id/>:结果集的主键唯一标识
  <result/>:结果集的普通字段
  column:表中的字段名
  property:pojo对象的属性名
  column和property:在一起表示实体类和表之间的映射关系
   -->
  <resultMap type="car" id="CarMap">
  <id column="carId" property="carId" />
  <result column="name" property="carName" />
  <result column="userId" property="userId" />
  </resultMap>

如果使用resultMap来处理这种简单的名字不一致的问题的时候,可以在resultMap里只去配置这个名字不一致的字段(或者),名字一致的可以省略掉。


resultMap:除了能够解决上述的名字不一致的问题外,还可以解决复杂的pojo问题

<resultMap type="UserVo" id="UserVoMap">
  <id column="id" property="id"/>
  <result column="username" property="username"/>
  <result column="sex" property="sex"/>
  <result column="birthday" property="birthday"/>
  <result column="address" property="address"/>
  <!-- 一对多 集合   ofType:集合的类型-->
  <collection property="cars" ofType="Car">
    <id column="carId" property="carId"/>
    <result column="name" property="carName"/>
    <result column="userId" property="userId"/>
  </collection>
  </resultMap>

association属性是一对一pojo使用的


目录
相关文章
|
3天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1593 2
|
3天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
557 3
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
14天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
15天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
900 11
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
2天前
|
人工智能 监控 前端开发
Electron 监控:让桌面 Agent 监控触手可及
一行代码实现Electron桌面端全景监控,自动还原崩溃现场、预警内存泄漏、全链路追踪、 SSE流式响应与交互埋点,让 AI 助手运行状态清晰可见,助力快速恢复稳定与流畅。
178 125
|
2天前
|
消息中间件 人工智能 Kafka
AI 时代,实时入湖正在告别 ETL:从 Kafka 到 Iceberg 的架构减法
本文围绕“零 ETL”这一趋势,讨论流数据入湖为什么需要做架构减法,并结合 Kafka × Table Bucket 的实践,分析一种将通用入湖能力前移到消息与表存储链路中的方案,如何在降低复杂度的同时,兼顾实时性、一致性、Schema 演进、CDC 语义与开放生态兼容。
183 121
|
7天前
|
缓存 人工智能 运维
GLM 5.2自托管全流程实战:硬件选型、vLLM/SGLang部署与成本盈亏测算
2026年智谱发布GLM 5.2超大混合专家模型,区别于以往仅开放API的闭源大模型,该模型权重以MIT开源协议对外发布,企业与开发者可完整下载、本地审计、私有化部署,实现数据不出环境、自定义微调、自主调度推理资源。GLM 5.2拥有753B总参数,原生支持百万级上下文窗口,在代码生成、长文档推理、数学逻辑等多项基准测试中对标国际顶尖商用模型,是首款可完整自托管的前沿代码向大模型。
614 0