MyBatis的ORM映射

JavaEE-ORM映射器MyBatis MyBatis sf2gis@163.com 2015年12月9日   1  目标:实现对象和关系的映射。 包括对象和关系的实体映射及实体操作的映射。 2 原理:将表映射为一个类,列映射为类的属性,行映射为对象,OO行为映射为SQL操作(由映射文件配置SQL操作)。 PO=POJO+与表相同列属性。 3 流程:安装,配置数据库,创建实体类,创建SQL操作映射文件,操作实体类。 参 阅读详情

目录

什么是ORM

一,列的别名

二,结果映射

三,总结


什么是ORM

        ORM:对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

        1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 

        2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系,二者不同时无法自动ORM,如下:

一,列的别名

在SQL中使用 as 为查询字段添加列别名,以匹配属性名:

在RoleDao接口中

public List<Role> findAll();

在RoleDao.xml文件中

<select id="findAll" resultType="com.by.pojo.Role" >
        select id, role_name as roleName, role_desc as roleDesc from role
    </select>

在测试类中

public class MyBatisTset {
        private SqlSession sqlSession;
        private InputStream inputStream;
        @Before
        public void init() throws IOException {
            //加载配置文件
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            //创建SessionFactory
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //使用数据的会话实例
            sqlSession = sessionFactory.openSession();
        }
        @Test
        public void testFindAll(){
            RoleDao roleDao = sqlSession.getMapper(RoleDao.class);
            List<Role> roleList = roleDao.findAll();
            for (Role role : roleList) {
                System.out.println(role);
            }
        }
        @After
        public void close() throws IOException {
            sqlSession.close();
            inputStream.close();
        }
}

输出结果:

 

如果我们的查询很多,都使用别名的话写起来岂不是很麻烦,有没有别的解决办法呢?

二,结果映射

在RoleDao接口中

public List<Role> findAll2();

在RoleDao.xml文件中

<!--
        id:和select查询标签的返回值保持一致
        type: 映射实体的全类名
    -->
    <resultMap id="findAll2ResultMap" type="com.by.pojo.Role">
        <!--
            描述主键字段的映射关系:
                property:实体类的属性
	            column:数据表字段名称
        -->
        <id property="id" column="id" />

        <!--
            描述非主键字段的映射关系:
                property:实体类的属性
	            column:数据表字段名称
        -->
        <result property="roleName" column="role_name" />
        <result property="roleDesc" column="role_desc" />
    </resultMap>
    <select id="findAll2" resultMap="findAll2ResultMap" >
        select * from role
    </select>

在测试类中

public class MyBatisTset {
        private SqlSession sqlSession;
        private InputStream inputStream;
        @Before
        public void init() throws IOException {
            //加载配置文件
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            //创建SessionFactory
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //使用数据的会话实例
            sqlSession = sessionFactory.openSession();
        }
        @Test
        public void testFindAll(){
            RoleDao roleDao = sqlSession.getMapper(RoleDao.class);
            List<Role> roleList = roleDao.findAll2();
            for (Role role : roleList) {
                System.out.println(role);
            }
        }
        @After
        public void close() throws IOException {
            sqlSession.close();
            inputStream.close();
        }
}

输出结果

三,总结

ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。 
        ORM技术特点: 
        1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 
        2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。 

        ORM的优缺点 
        1.ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 
        2.从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。

ORM 对象关系映射 ORM概念 ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。 ORM可理解成一种规范,它概述了这类框架的基本特征,完成面向对象的变成语言到数据库的映射。 ORM 把数据库映射成对象。 将数据库的表(table)映射为:类(class) 记录(record,行数据)映射为:对象(object) 字段(field)映射为:对象的属性(attribute) 举例来说,下面是一行 SQL 语句。 SELECT i 阅读详情

相关推荐

MyBatis和ORM的区别

ORM ORM: 即Object Relation Mapping,即对象关联映射。所以ORM就是将Java中的对象和数据库中的表关联对应起来 MyBatis Mybatis相当于将mapper中的入参和出参结果集封装到java的POJO类中,实际上Mybatis是半ORM,它鼓励开发人员自己去写sql,也正是因为sql语句要自己写,所以Mybatis是将java方法与sql语句关联起来,而没有将java对象与数据库关联起来。 补充 流行的ORM框架1、JPA:JPA本身是一种ORM规.

小小渔夫 2972

mybatis —— ORM框架

什么是框架 框架是一种经过校验、具有一定功能的半成品软件品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。 什么是ORM ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体 对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交 道,只需简单的操作对象的属性和方法。 ...

weixin_46610000的博客 4287

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 157

【Mybatis】什么是 ORM(对象关系映射)

文章目录一、什么是ORM二、mybatis中ORM的体现三、核心原则四、ORM的优缺点五、总结 一、什么是ORM         对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 怎么理解上面的那句话呢?         在Java中我们使用Stri

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈ 6939

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

从数据手册到代码:一步步解读SC7A20寄存器配置与加速度值换算原理

本文详细解析了SC7A20三轴加速度传感器的寄存器配置与加速度值换算原理。从数据手册出发,逐步拆解关键寄存器设置,并推导原始ADC值到物理加速度的完整换算过程,帮助开发者深入理解传感器底层工作原理,提升嵌入式开发效率。

weixin_29179311的博客 366

MyBatis详解(1)-- ORM模型

4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。

ji_xin0721的博客 1378

【光伏风电功率预测】偏差考核每月少几十万:STL-VMD + Informer-LSTM 在某基地的落地案例

摘要:某风光一体化基地通过STL-VMD二次分解与Informer-LSTM并行残差模型,在不推翻现有预测系统的情况下,将风光功率预测的综合nRMSE降低了1.2-1.5个百分点。该方案通过分解预测误差为多个子序列,并采用不同模型处理各频段特征,显著改善了关键时段的预测精度。实施后,风电nRMSE从9.0%降至7.6%,光伏从10.2%降至8.8%,每月减少偏差考核费用30-50万元。项目经验表明,数据质量优化、参数调优及与业务目标对齐是关键成功因素,该技术路线具有可复制性,为风光基地预测精度提升提供了有效

专注AI大模型,软件混淆,授权 264

MyBatis ORM映射方式详解

MyBatis是一个持久层框架,它通过XML描述符或注解将Java对象与数据库记录进行映射。与Hibernate等全自动ORM框架不同,MyBatis允许开发者直接编写SQL语句,从而提供了更高的灵活性和控制力。MyBatis作为一种灵活且强大的ORM框架,提供了多种映射方式,包括基于XML的映射、基于注解的映射以及混合映射。开发者可以根据项目需求选择合适的映射方式,并通过动态SQL、关联映射、延迟加载等高级特性进一步提升应用的性能和可维护性。

weixin_39033358的博客 2213

QGis 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中...)

QGis 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中...)

279

【问题解决】本地 Llama / Qwen 运行报错:transformers 版本不兼容、依赖冲突解决

Flask是一个轻量级的Web框架,设计上非常简单和易于扩展。它并不强制使用任何特定的项目结构或工具,这使得开发者能够根据自己的需求自由地设计应用。Flask的灵活性使它成为了许多小型项目和原型开发的理想选择。FastAPI是一个现代的Web框架,基于Python 3.7+,专为构建API而设计。FastAPI的特点是高性能、支持异步操作,并且内置了许多现代Web应用所需的功能,如数据验证和自动生成API文档等。从性能角度看,FastAPI在高并发场景下具有明显优势,特别是在I/O密集型的应用中。

博客 800

六、Mybatis的ORM映射

ORM映射是一种技术,它通过现实ORM规范,完成面向对象的编程语言到关系数据库的映射。它可以把关系型数据库封装成对象,解决面向对象编程语言与底层关系数据库不协调的问题。类与表相对应。类的属性(成员变量)与表的字段相对应。类的实例与表中具体的一条记录相对应。一个类可以对应多个表,一个表也可以对应多个类。数据库中的表可以没有主键,但是类的实例中必须设置主键字段。数据库中表与表之间的关系(如外键)映射成为对象之间的关系。

wasd2051678946的博客 1113

使用MATLAB求解二维顶盖驱动流问题的详细代码和说明

本文介绍了使用MATLAB求解二维顶盖驱动流问题的涡量-流函数方法。代码采用129×129网格,雷诺数Re=1000,通过迭代求解Navier-Stokes方程,包含流函数方程和涡量输运方程的离散求解。程序实现了边界条件处理、收敛性检查,并提供丰富后处理功能:流线图、涡量分布图、中心线速度曲线、矢量图和三维涡量可视化。计算结果可与Ghia等(1982)的经典数据进行验证。该代码完整展示了CFD问题的数值求解流程,包括参数设置、主循环计算和多种结果呈现方式,适用于流体力学教学和科研验证。

AI的内部世界的博客 225

MyBatis 工作原理解析:如何做到 ORM 映射的优雅

MyBatis 是一个支持自定义 SQL 查询、存储过程以及高级映射的持久层框架。它最初名为 iBATIS,由 Clinton Begin 在 2001 年创建,后被 Apache 接收并更名为 iBATIS,2010 年迁移到 Google Code 后正式更名为MyBatis,目前由 GitHub 托管。MyBatis 以其轻量、灵活、高效的特点,在众多 ORM 框架中独树一帜。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

ModuleNotFoundError: No module named‘langchain.schema.output parserlangchain.schema is not a package

电脑里现有的langchain库版本与import所需的不同,卸载原有langchain,重新下载最新的langchain。在步骤1后,若仍不可运行。在确保已重新下载新langchain后,重启python后,可正常运行。在版本号中填入所需的langchain版本号,可在requirements.txt查看。运行如下代码时,出现error。

weixin_45751925的博客 1713

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于Mybatis是半自动ORM映射工具解释

ORM(Object-Relational Mapping,对象关系映射)是一种用于简化数据库访问的技术,它通过将数据库中的表结构映射为编程语言中的对象,使得开发者可以使用面向对象的方式来操作数据库数据,而不需要编写大量的 SQL 语句。MyBatis 是一款支持定制 SQL、存储过程和高级映射的持久层框架。它允许开发者通过 XML 映射文件或注解来定义 SQL 语句,以及将查询结果与 Java 对象进行映射。

Flying_Fish_roe的博客 831

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MyBatis——MyBatis的ORM映射和MyBatis的配置文件升级

MyBatis的ORM映射和MyBatis的配置文件升级

wan的博客 1076

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Mybatis】ORM对象关系映射框架Mybatis开发步骤

MyBatis 的前身是 iBatis。iBatis 是由 Clinton Begin 创建的一个开源项目,最初是在 Apache Software Foundation 下进行的。iBatis简化了 Java 应用程序与数据库之间的交互,MyBatis 保留了 iBatis 的核心特性,比如 SQL 映射文件、动态 SQL 和缓存机制等,同时也引入了一些新的特性和改进,比如增强了对动态 SQL 的支持、提供了更多的配置选项以及更好的性能优化等。

m0_66584716的博客 1215

【Mybatis】如何实现ORM映射-二

Mybatis章节,如何使用Mybatis完成ORM映射

admin_2022的博客 659

2.1MyBatis——ORM对象关系映射

概括的说,MyBatis中,对于映射关系的声明是由开发者在xml文件手动完成的。比如对查询方法而言,你需要显式声明ResultType或ResultMap,这里其实就是在定义数据库字段和Java属性之间的映射关系。

罗曼蒂克在消亡 1224

【MyBatis】02ORM映射/多表连接

ORM一、ORM映射【`重点`】1.1 MyBatis自动ORM失效1.2 方案一:列的别名1.3 方案二:结果映射(ResultMap - 查询结果的封装规则)二、MyBatis处理关联关系-多表连接【`重点`】2.1 OneToOne2.2 OneToMany2.3 ManyToMany2.4 关系总结 一、ORM映射【重点】 1.1 MyBatis自动ORM失效 MyBatis只能自动维护库表”列名“与”属性名“相同时的一一对应关系,二者不同时,无法自动ORM。 1.2 方案一:列的别名 在

XiaoChen~Coder 605

MyBatis的ORM的映射、配置文件

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

w2144217940的博客 750
上一篇: mysql服务器常用的命令
下一篇: MyBatis的配置文件(.properties,typeAliases,Mappers)
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值