ibatisresultclass有哪几种类型(ibatis result查询空值怎么处理)

技术如何进行iBATIS ResultMap基础的浅析本篇文章为大家展示了如何进行iBATIS ResultMap基础的浅析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。iBAT

本文向您展示了如何分析iBATIS结果图的基础。内容简洁易懂,一定会让你大放异彩。希望通过这篇文章的详细介绍,你能有所收获。

iBATIS结果图是我们研究IBATIS的一个非常重要的内容。就个人而言,善用ibatis的关键之一是ResultMap。从字面上看,它是结果集的映射,也就是说,返回的记录逐字段的映射被分配给对象的属性。事实上,如果没有特殊要求,我们可以用ResultClass代替它,因为如果字段与属性完全相同,查询到的数据集会自动匹配ResultClass指定的类的实例对象,如果字段名称不在属性中,那么这个字段就不会被返回的实例对象接受,相当于没有找出相同的字段。

每个结果映射都有自己的标识。如果没有在sqlmap.config中配置命名空间,那么这个ResulteMap ID是全局的(这在所有iBATIS配置元素中都是一样的),ResultMap的一个重要属性是class,它将决定这个ResultMap对应的实例的类。换句话说,它用于指示结果集要映射的数据类型。在extends属性中,您可以设置它将继承的ResultMap。如果为他指定了一个值,它将从超级Resultmap继承映射配置字段。定义如下:

(结果映射) (结果映射id=' demoresultmap ' class=' hashtable ')(/结果映射)(结果映射)如果正确配置了带有iBATIS的XSD模式文件,此时将会提示您。是的,下一步是定义结果元素。每个结果元素定义了字段和数据类属性之间的映射。每个结果元素中有许多属性参数,其中属性和列是必需的,其他参数和属性是可选的。因此,我们必须在每个结果映射中定义多个结果定义。以下配置可以完成基本配置。

& lt结果图&lt。& lt结果映射id=' demoresultmap ' class=' hashtable ' & gt;& lt结果属性=' id '列=' id '/& lt;结果图>

columnIndex属性为我们提供了一个将数据集的下标字段映射到指定的数据对象属性的方案,但是这个方法要尽量少用,你会发现对我们以后的维护和可读性会有很大的副作用。

dbType属性明确表示这个字段对应的数据库类型,我在大多数情况下很少使用。

类型属性明确表示该字段对应的数据对象属性的数据类型。通常,如果要确保类型安全,需要设置此属性。

结果映射属性稍微复杂一点。它用在场景中。如果一个数据类的属性是一个复杂的数据类型而不是基元数据类型,那么我们就不能简单地给它一个简单的结果元素,还必须给它一个完整的resultMap。存在结果映射属性来完成此功能。它的属性值是现有结果映射的标识。

nullValue属性没什么好说的。当该字段的值为空时,它给出该字段的默认值。

选择属性和结果映射一样复杂。首先,它的属性值必须是返回数据集的查询语句的ID。可以配置此属性的数据类属性可以是基元类型、复合类型或包含多条数据的集合类型。所有这些类型都可以,没有问题。它的一个重要意义在于join描述了不同表之间的关系。通过此查询,当您想要在不连接的情况下从另一个表中查询相关字段时,可以使用select属性。如下所示:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

bsp; ﹤/resultMap﹥       ﹤/resultMaps﹥       ﹤statements﹥    ﹤select id="SELECT_Children" resultClass="ChildrenObject"﹥  SELECT * FROM Children WHERE ParentID = #id#    ﹤/select﹥       ﹤/statements﹥

这样就可以做到不用通过编程的方式来表示不同表的关联关系和数据读取问题。但是这样有可能存在一种问题,如果你每次都要读取数据的时候,你会发现你会产生更多次的与数据库交互的情况,并且即使你不是每次都需要这数据,那会不会造成数据读取的浪费呢?接下来的lazyLoad属性就为我们提供了第二种问题的解决方案了,那就是数据的延迟加载,没错,延迟加载可以大大改善数据访问的性能,它只是要需的时候才去读取这些数据,对于主从表关系的时候,这样的方式可能是***的解决方式了。

OK,关于ResultMap的介绍就先到此为止,接下来我要记录一下,我在使用过程中遇到的一些问题:

一.在使用ResultMap的时候,你要特别注意,如果你在ResultMap中给出的配置字段,但是你返回的数据集的时候却没有返回这个字段,那程序将出抛出异常。但是相反的,如果你返回了一些字段,却没有在ResultMap给出配置定义的话,那么那些字段将不会被处理而不会给你任何的提示,相当没有查询出这些字段。你要特别注意这个问题。

二.如果没有特别需求的情况,我建议还是把数据类的属性设计成与数据库字段字一样的比较,这样如果一般情况下我们都可以不用写这个ResultMap,事实上如果没有这样的特殊要求,那么去写这个ResultMap仍然是一件非常耗时,并且容易出错的一份差事。

三.在使用lazyLoad的时候要特别注意,不是什么类型的数据都可以lazyLoad的,只有是实现的IList的接口的类型,并且数据类的属性定义为IList类型的字段才能被lazyLoad。(关于是否只有IList类型的属性才能被lazyLoad的问题还需要探讨一下,因为就我使用的经验只有这种类型才可以,甚至是Generic版的IList都不支持)。而且你在使用它的时候,还不能把这个IList类型的属性转换成你真正的数据类型。因为在运行时,这个属性会被包装成一个动态的类型,这个动态类型仍然实现了IList接口,就是因为这个动态类型才扩展了我们可以lazyLoad的功能。这时候在程序中使用的是运行时的动态类型所以你没办法进行强类型转换。

上述内容就是如何进行iBATIS ResultMap基础的浅析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/152041.html

(0)

相关推荐

  • DM7 RAC数据库怎样恢复成单机数据库

    技术DM7 RAC数据库怎样恢复成单机数据库本篇文章为大家展示了DM7 RAC数据库怎样恢复成单机数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。DM7 RAC数据库恢复成单

    攻略 2021年11月30日
  • JDBC中如何连接数据库

    技术JDBC中如何连接数据库这篇文章主要为大家展示了“JDBC中如何连接数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JDBC中如何连接数据库”这篇文章吧。连接数据库的

    攻略 2021年11月25日
  • 如何将后端baas化(baas替代后端程序员)

    技术怎样将后端BaaS化怎样将后端BaaS化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。BaaS 化的核心其实就是把我们的后端应用封装成 RESTfu

    攻略 2021年12月21日
  • Comp20211218

    技术Comp20211218 Comp20211218import com.sun.tools.javac.util.Assert;import com.sun.tools.javac.util.Pai

    礼包 2021年12月18日
  • sqliteselect详解(sqlite字段怎么设置)

    技术SQLite中的SELECT子句如何使用别名小编给大家分享一下SQLite中的SELECT子句如何使用别名,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!SQLite中的SELECT子句使用别名开发者

    攻略 2021年12月18日
  • ADO.NET sql server存储过程怎么调用

    技术ADO.NET sql server存储过程怎么调用这篇文章主要介绍“ADO.NET sql server存储过程怎么调用”,在日常操作中,相信很多人在ADO.NET sql server存储过程怎么调用问题上存在疑

    攻略 2021年12月3日