news 2026/4/15 20:18:20

Mybatis之作用域(Scope)和生命周期-解决属性名和字段名不一致的问题ResultMap结果集映射

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mybatis之作用域(Scope)和生命周期-解决属性名和字段名不一致的问题ResultMap结果集映射

生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题

SqlSessionFactoryBuilder

  • 一旦创建了 SqlSessionFactory,就不再需要它了。
  • 局部变量

SqlSessionFactory

  • 说白了就是可以想象为:数据库连接池
  • 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例
  • 因此SqlSessionFactory 的最佳作用域是应用作用域。
  • 最简单的就是使用单例模式或者静态单例模式。

SqlSession

  • 连接到池的一个请求!
  • SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
  • 用完之后感觉关闭,否则资源被占用!

一个池子有多个线程,每一个线程都是独享的,不能够共享。每一个SqlSession 都会去连接Mapper,这里面的每一个Mapper,就代表一个具体的业务!(SQL)

参考:

https://mybatis.org/mybatis-3/zh_CN/getting-started.html

问题

数据库中的字段

新建一个项目,拷贝之前的,测试实体类字段不一致的!

publicclassuser{privateintid;privateStringname;privateStringpassword;

测试出现问题

select*from mybatis.user where id=#{id};//类型处理器select id,name,pwd from mybatis.user where id=#{id};

解决方法:

  • 起别名

UserMapper.xml 中

<selectid="getUserById"parameterType="int"resultType="user">select id,name,pwd as password from mybatis.user where id=#{id};</select>

resultMap

结果集映射

id name pwd id name password

UserMapper.xml 中

<!-- 结果集映射 id是属性,用来给应用的,type指定类名--><resultMapid="UserMap"type="user"><!--列column指的是数据库中的字段,属性property指的是实体类中的属性--><resultcolumn="id"property="id"/><resultcolumn="name"property="name"/><!--数据库中的列是pwd,实体类中的属性是password,进行结果集映射--><resultcolumn="pwd"property="password"/></resultMap><!--<select id="对应UserMapper的方法" resultType="实体类">--><selectid="getUserById"resultMap="UserMap">select * from mybatis.user where id=#{id};</select>

  • <font style="color:rgb(221, 17, 68);background-color:rgb(247, 247, 249);">resultMap</font>元素是 MyBatis 中最重要最强大的元素
  • ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
  • <font style="color:rgb(221, 17, 68);background-color:rgb(247, 247, 249);">ResultMap</font>的优秀之处——你完全可以不用显式地配置它们
  • 如果这个世界总是这么简单就好了。

参考:

官方文档:https://mybatis.org/mybatis-3/zh_CN/sqlmap-xml.html
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 2:14:07

需求接口人与研发接口人的职责分别是什么

需求接口人与研发接口人是连接“业务价值”与“技术实现”的两个核心枢纽。需求接口人&#xff08;通常是产品经理或业务分析师&#xff09;的核心职责是“定义”&#xff0c;即明确“做什么”和“为什么做”&#xff0c;他们对业务价值、需求优先级和用户体验负责。研发接口人…

作者头像 李华
网站建设 2026/4/15 10:23:28

基于大数据的短视频用户兴趣分析的设计与实现(程序+文档+讲解)

课题介绍在短视频平台精细化运营、个性化推荐需求下&#xff0c;传统用户兴趣分析存在 “维度单一、实时性差、精准度不足” 的痛点&#xff0c;基于大数据技术构建的短视频用户兴趣分析体系&#xff0c;整合用户行为数据、内容交互数据、环境数据等多源信息&#xff0c;实现用…

作者头像 李华
网站建设 2026/4/8 0:33:12

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份 时间范围1999-2023年 人均生产总值指数(人均GDP指数) 包括一下: 人均生产总值(人均GDP) 各省地区生产总值GDP 人均生产总值指数(人均GDP指数) 地区生产总值指数 见图 说明:人均生产总值指…

作者头像 李华
网站建设 2026/4/15 14:44:49

医疗自动标注漏医生隐写症状 后来补NLP规则引擎才救回诊断准确率

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 目录医疗数据科学&#xff1a;当Excel遇上心电图&#xff0c;我差点把医院整崩溃了 一、为什么说我是"数据界的急诊科医生" 二、那些年我在医疗数据里踩过的坑 三、那些让人拍案叫绝的医疗数据应用 四、给想入…

作者头像 李华
网站建设 2026/4/6 1:47:56

C 语言字符串函数超全解析

对于刚接触 C 语言的小伙伴来说&#xff0c;字符串函数就像 “字符处理的万能工具”&#xff0c;但用不好也容易踩坑。这篇内容会从 “核心逻辑→常用函数→避坑指南” 一步步讲&#xff0c;先懂底层、再学用法、最后避坑&#xff0c;保证通俗易懂&#xff5e; 一、先搞懂&…

作者头像 李华
网站建设 2026/4/15 11:13:40

海外仓签收入库环节怎么优化?海外仓入库流程优化方案(附TOPWMS实操)

在海外仓一件代发业务中&#xff0c;海外仓入库环节常被低估&#xff0c;但入库的问题直接影响到后续仓库的一系列操作。货物堆堵、SKU混乱、错发追责等入库乱象&#xff0c;并非单纯的管理疏忽&#xff0c;其根源在于缺乏一套系统化、标准化的流程管控体系。今天将根据我们的东…

作者头像 李华