news 2026/8/11 9:14:37

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/8/7 8:35:34

手术室调度混乱每天浪费数小时,AI如何成为医院救星

在医疗领域&#xff0c;人工智能和机器人备受关注&#xff0c;但真正让医院损失金钱的问题其实是手术室协调。每天有2到4小时的手术室时间被浪费&#xff0c;这并非因为手术本身&#xff0c;而是因为手术间隙的各种问题&#xff0c;从人工排班和协调混乱到房间周转时间的不确定…

作者头像 李华
网站建设 2026/8/6 13:07:22

激动人心!Spring AI 2.x 发布!史诗级加强!

目录版本概览与重大变更**革命性的技术栈升级**&#x1f4e6; 环境要求与项目配置环境要求依赖配置基础配置 (application.yml)✨ 核心新特性与升级详解1. Redis 史诗级增强&#xff1a;成为AI应用核心存储2. 模型生态全面爆发3. 企业级特性与基础设施&#x1f4bb; 核心API使用…

作者头像 李华
网站建设 2026/7/21 11:48:42

128陷阱

总结&#xff1a;****Integer包装类在实现自动装箱时&#xff0c;为了节省内存和提升性能&#xff0c;设置了缓存数组。该缓存数组在Integer类加载时预创建了从-128到127共256个Integer对象。当使用自动装箱或调用Integer.valueOf()方法时&#xff0c;如果数值在-128到127范围内…

作者头像 李华
网站建设 2026/7/31 10:00:44

【课程设计/毕业设计】基于springboot的旅游网站系统的设计与实现基于springboot的旅游管理系统,在线旅游管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华