iBATIS ResultMap基础浅析

ROS Navigation global_planner框架解析 ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath. 阅读详情


 

 

     ibatis resultmap是我们学习ibatis中非常重要的一个内容,在我个人看来,能否真正用好ibatis

的一个关键,这就是resultmap。字面上理解,它就是结果集的映射,就是将返回的记录逐

个字段的映射赋值给对象的属性上。其实如果没有特殊需求的话我们完全可以使用

resultclass来代替它,因为如果字段与属性一模一样的话,查询出来数据集会自动匹配到

resultclass指定的类的实例对象,如果字段名不在属性中的话,那这个字段将不会被返回的

实例体类对象接受,相当于没有查询出这个字段一样的。 

每个resultmap都有一个自己的id,如果你在sqlmap.config中没有配置使用命名空间的话,

那么这个resultemap id是全局(这点在所有的ibatis配置元素都是一样的),resultmap一个

重要的属性的是class,它将决定这个resultmap对应的实例的类,换句话讲,它的作用是指出

结果集要映射的数据类型。在extends属性中可以设置它将要继承的resultmap,如果给他指

定的了值,那么它将会从super resultmap继承所的映射配置字段。定义如下: 

 

 

﹤resultmaps﹥   

 ﹤resultmap id="demoresultmap" class="hashtable"﹥   

 ﹤/resultmap﹥   

﹤/resultmaps﹥  

[/pre] 

如果你有正确配置了ibatis的xsd架构文件的话,那么这时候就会提示resultmap的定义是不

完全的。没错,接下来就是要定义result元素。每一个result元素都是定义一个字段与数据

类属性对应的映射。在每一个result元素有比较多的属性参数,其中property和column是

必须的,其它的参数属性都是可选的。所以我们在每一个resultmap中必须定义超过一个以

上的result定义。通常以下的配置就可以完成基本的配置了。 

 

 

﹤resultmaps﹥   

 ﹤resultmap id="demoresultmap" class="hashtable"﹥   

﹤result property="id" column="id"/﹥   

 ﹤/resultmap﹥   

﹤/resultmaps﹥  

[/pre] 

但如果你需要更多的要求的话,result map仍然能够最大限度的满足你。 

◆columnindex属性提供了我们将数据集的第几个下标字段映射到指定的数据对象属性的方

案,但是这种方式应该尽量的少用,你会发现这对我们以后的维护和可读性会产生很大的副

作用。 

◆dbtype属性明确指出这个字段对应的数据库的类型,大多数情况我很少会用到。 

◆type属性则明确指出这个字段将对应的数据对象属性的数据类型,通常如果你想保证类型

安全的话,设置这个属性是很必要的。 

◆resultmapping属性则稍微复杂一些,它是用在一种场景下,如果一个数据类的属性本身不

是基元数据类型,而是一个复杂数据类型的话,那我们就不可能很简单地给它一个简单的

result元素就了事了,还必须给他一个完整的resultmap。而resultmapping属性就是为了完成这个功能而存在的。它的属性值是一个已存在的resultmap的id。 

◆nullvalue属性就没什么好讲的了,它是给出当这个字段的值为null的时候,它的默认值是

多少。 

◆select属性同resultmapping一样比较复杂一样,先说一下它的属性值必须是一个返回数据

集合的查询语句的id,能配置这个属性的数据类属性可以是一个基元类型,复合类型,也可

以是一个包括多条数据的集合类型,这些类型都行,没有问题的。它的一处重要的存在意义

就在于描述不同表之间的关系问题,通过本次的查询,你想不通过join的手段从另一个表

查询相关字段的时候,你就可以使用select属性。如下: 

 

 

﹤resultmaps﹥   

 ﹤resultmap id="demoresultmap" class="hashtable"﹥   

﹤result property="id" column="id"/﹥   

﹤result property="children" column="id" select="select_children"/﹥   

 ﹤/resultmap﹥   

    ﹤/resultmaps﹥   

    ﹤statements﹥   

 ﹤select id="select_children" resultclass="childrenobject"﹥   

select * from children where parentid = #id#   

 ﹤/select﹥   

    ﹤/statements﹥  

[/pre] 

这样就可以做到不用通过编程的方式来表示不同表的关联关系和数据读取问题。但是这样有

可能存在一种问题,如果你每次都要读取数据的时候,你会发现你会产生更多次的与数据库

交互的情况,并且即使你不是每次都需要这数据,那会不会造成数据读取的浪费呢?接下来

的lazyload属性就为我们提供了第二种问题的解决方案了,那就是数据的延迟加载,没错,

延迟加载可以大大改善数据访问的性能,它只是要需的时候才去读取这些数据,对于主从表

关系的时候,这样的方式可能是最好的解决方式了。 

ok,关于resultmap的介绍就先到此为止,接下来我要记录一下,我在使用过程中遇到的一

些问题: 

一.在使用resultmap的时候,你要特别注意,如果你在resultmap中给出的配置字段,但是

你返回的数据集的时候却没有返回这个字段,那程序将出抛出异常。但是相反的,如果你返

回了一些字段,却没有在resultmap给出配置定义的话,那么那些字段将不会被处理而不会

给你任何的提示,相当没有查询出这些字段。你要特别注意这个问题。 

二.如果没有特别需求的情况,我建议还是把数据类的属性设计成与数据库字段字一样的比

较,这样如果一般情况下我们都可以不用写这个resultmap,事实上如果没有这样的特殊要

求,那么去写这个resultmap仍然是一件非常耗时,并且容易出错的一份差事。 

三.在使用lazyload的时候要特别注意,不是什么类型的数据都可以lazyload的,只有是实

现的ilist的接口的类型,并且数据类的属性定义为ilist类型的字段才能被lazyload。(关于

是否只有ilist类型的属性才能被lazyload的问题还需要探讨一下,因为就我使用的经验只有

这种类型才可以,甚至是generic版的ilist都不支持)。而且你在使用它的时候,还不能把这

个ilist类型的属性转换成你真正的数据类型。因为在运行时,这个属性会被包装成一个动态

的类型,这个动态类型仍然实现了ilist接口,就是因为这个动态类型才扩展了我们可以

lazyload的功能。这时候在程序中使用的是运行时的动态类型所以你没办法进行强类型转换。 

C++经典面试题100例及答案 答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。 阅读详情

相关推荐

S32K144(14)ADC

1、简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 S32K14x包含两个12位ADC模块,ADC0和ADC1 应用程序可能需要ADC的连续采样(4K采样/秒),这可能对CPU有相当大的负载。虽然使用可编程延迟块(PDB)来触发ADC可能会减少一些CPU负载,但当ADC以非常高的速率采样或PDB被绕过时,ADC支持DMA请求功能以获得更高的性能。ADC可以在转换完成时触发DMA(通过DMA请求)。TRGMUX会根据不同的应用需求,使用软件为用户提供更灵活的DMA触发方案,例如,可

朗朗上口就行啦的博客 1万+

ibatis Tips 之 resultMap

先看个具体的例子: <resultMap id=”get-product-result” class=”com.ibatis.example.Product”> <result property=”id” column=”PRD_ID”/> <result property=”description” column=”PRD_DE...

xulongfa的专栏 258

用OpenCV+ROS实现焊接机器人智能纠偏:线激光视觉的算法调参全流程

本文详细介绍了基于OpenCV和ROS的焊接机器人智能纠偏系统全流程。通过线激光视觉系统实时感知焊缝,重点解析了抗干扰图像预处理、改进的Steger算法提取激光条纹中心线,以及从2D像素到机器人基坐标系的完整坐标变换。该系统为应对焊接飞溅、弧光等复杂工况,实现高精度实时路径纠偏提供了从算法优化到工程集成的完整解决方案。

vodka的博客 158

ibatis的resultMap

1.resultMap 元素的概念视图  constructor – 类在实例化时,用来注入结果到构造方法中  idArg – ID 参数;标记结果作为 ID 可以帮助提高整体效  arg – 注入到构造方法的一个普通结果  id – 一个 ID 结果; 标记结果作为 ID 可以帮助提高整体效能  result – 注入到字段

空灵的专栏 1808

DPABI实战:手把手教你处理小鼠静息态fMRI数据(从Voxel Size到SPM完整流程)

本文详细介绍了使用DPABI处理小鼠静息态fMRI数据的完整流程,从Voxel Size调整到SPM分析,涵盖预处理、质量控制和可视化等关键步骤。针对小鼠数据特有的低分辨率和信噪比问题,提供了实战建议和避坑指南,帮助研究人员高效完成数据分析。

weixin_42663213的博客 476

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 551

iBatis动态传入表名,字段名

$和#     public List getProjectCodes(String table, String column, String returnColumn, String value) {     Map map = new HashMap();     map.put("table", table);     map.put("column", column);     map.p

xoclcn的专栏 1803

华为OD机试2025C卷真题题库目录|机考题库 + 算法考点详解

本文整理华为OD 2025C卷 机试(机考)题库,提供高频考点精析与详细题目内容,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 3986

ibatis resultMap groupBy属性使用

最近开始转用j2ee做开发,使用的数据持久层是iBatis。 在iBatis中要解决1:N、M:N问题必须要使用到resultMap,但使用过程中会遇到一个问题,就是groupBy的不能继承问题。现在举个例子向大家介绍一下这个问题和解决方法。 问题描述: 考虑一下这种情况,假如一家公司为了员工福利决定搞业余运动俱乐部,员工可以自由报名。运动的种类根据部门决定,这样就有了四个实体,公司,部门,

tanguang_honesty的专栏 3799

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1237

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 669

ibatis 动态传入 表名、列 以及参数

参数 用#parameter#接收  表名 列名 用 $tableName$     $columnName$接收(表名、列名也用#接收的话 sql语句里的表名列名会带  ' 单引号,导致报错)

huazaichang的专栏 3574

RISC-V CPU设计(三)---多周期CPU的设计与实现

基本情况 本多周期CPU支持RV32I指令集(fence,ecall,ebreak除外),已通过部分指令的测试,如代码有bug,欢迎指出。 模块划分 代码将CPU划分为以下几个模块: 1.控制单元:ControlUnit 用于产生控制信号,是CPU的大脑,指挥中枢。 2.分支决策单元:BranchUnit 用于决定B型指令是否发生跳转 3.立即数单元:ImmUnit 用于从指令中解析出立即数. 4.寄存器堆:RegisterFile RISC-V的32个寄存器,其中x0寄存器恒为0,不可更改。 5.指令存储

qq_40268672的博客 5542

iBATIS ResultMap

iBATIS ResultMap是我们学习iBATIS中非常重要的一个内容,在我个人看来,能否真正用好iBATIS的一个关键,这就是ResultMap。字面上理解,它就是结果集的映射,就是将返回的记录逐个字段的映射赋值给对象的属性上。其实如果没有特殊需求的话我们完全可以使用ResultClass来代替它,因为如果字段与属性一模一样的话,查询出来数据集会自动匹配到ResultClass指定的类的实例...

woshixushigang的专栏 198

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ibatis中resultMap

如果你使用iBatis的Result Map来工作,那么你一定知道iBatis的Result Map是用来提供数据库查询结果和它的对象属性之间的映射的,这是iBatis最常见且重要的特性了.本章仅是一个ResultMap的简单介绍.我们的Contact.java and SqlMapConfig.xml文件和我们的上一个例子是一样的,没有任何变化. Contact POJO的代码如下 : Con

在路上---品味生活 821

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ibatis中得resultMap得property属性值得大小写

ibatis中得resultMap得property属性值得大小写总结准备一个实体类和一段sql实验一:改变实体类的大小写实验二:改变sql的resultMap的property属性值得大小写结论插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 总结 今天在公司写代码过程中,一不小心把sql

weixin_44434274的博客 1362

iBatis中查询的数据和resultMap对应

iBatis中我们在查询多条数据的时候都会返回一个resultMap,那么我们查询的数据就和resultMap对应,那么有没有想过如果两边对不上会怎么样,特别是在resultMap公用的情况下,你在那边加会有什么影响等情况。 经过我的测试发现,如果查询的字段多了,resultMap对应的字段少了,不会报错,只是查询后后台取的的数据这个字段为NULL值 如果resultMap多了,查询数据的时...

weixin_30478757的博客 588

获取ibatis resultMap信息

最近有个需要获取ibatis xml配置文件里的resultmap映射信息,主要是解析出有哪些column和对应的property及class。配置文件大家都知道的:类似如下: 想了两个方案,一:直接自己解析xml文件。但由于只能在运行时才处理这些信息,如果预先收集别人的sqlmap配置文件显得不靠谱,且很可能要搜索很多相关jar包。 二:可否通过ibatis

yaowj2的专栏 2464

通过iBatis的queryForMap方法比较resultClass与resultMap

iBatis的返回值参数类型也有种:resultMap与resultClass 这两种类型的选择可以用两句话说明之: 一:当结果集列名和类的属性名完全相对应的时候,则可直接用resultClass直接指定查询结果类型。     二:当查询结果集与属性名对应不上的时候,就可以采用resultMap指定列名与对象属性名之间的对应关系,否则对应不上的属性将为null或0.     resul

5957

iBATI的ResultMap基础浅析

转自:http://blog.csdn.net/aspnetandjava/article/details/7061341  ibatis resultmap是我们学习ibatis中非常重要的一个内容,在我个人看来,能否真正用好ibatis 的一个关键,这就是resultmap。字面上理解,它就是结果集的映射,就是将返回的记录逐 个字段的映射赋值给对象的属性上。其实如果没有特殊需

徐行 978

ibatis中resultClass与resultMap 的区别

 ibatis的resultClass与resultMap还是有很大的区别。以下是我碰到的一个问题。 配置文件写法如下: 1 sqlMap2 typeAlias alias="notice" type="path.country.basic.entity.Notice"/3 resultMap id={% ...   ibatis的resultClass与resultMap还是有很大的区别。以下是...

qq_23337175的博客 291

ibatis 学习外篇之 resultMap parameterMap

ibatis结果映射是可以自动映射的,不过这样子的话,第一次的开销会比较大,而且也不利于早点发现代码bug。

克念的blog 722
上一篇: Ibatis学习笔记
下一篇: The Network Adapter could not establish the connection
aspnetandjava
博客等级 码龄16年 43粉丝 42原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值