iBATIS映射文件是什么

发布时间:2021-07-15 09:44:41 作者:chen
来源:亿速云 阅读:108

本篇内容主要讲解“iBATIS映射文件是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“iBATIS映射文件是什么”吧!

要了解iBATIS映射文件基础,首先我们来看,iBATIS的核心就在于映射文件(Data Map XML File)。在映射文件里可以定义包括要执行各种SQL语句,存储过程,输入参数映射,返回结果映射,缓存机制,并且能通过几种相对比较复杂的配置实现对象之间的关联关系和延迟加载。这也是iBATIS区别ORM框架的,具备更灵活性,更高性能的关键所在。

配置文件可以写得很简单,也可以很复杂。复杂配置文件也是出于更好的设计,更好性能,更好扩展性方面的目的。再复杂的配置文件也是有限的,一个映射文件包括:Mapped Statements、Parameter Maps、Result Maps、Cache Models几个主要的配置,还包括命名空间的配置,类型别名的配置。

iBATIS映射文件1.Mapped Statements :

顾名思义就是映射的语句声明。它是整个iBATIS配置核心的核心,真正将被执行的SQL语句(或存储过程)都是必须在这里被显式声明。在Mapped Statements里可以包含有:statement、select、insert、update、delete、procedure这6种不同的语句类型。从词面理解相信就可以了解到这些类型功能的一大半了。statement可以包含所有类型的SQL语句(存储过程),它是一个泛泛的语句配置,没特别明确的职责,相反,其它5种类型的语句配置就是专门负责各种不同的SQL语句。下面这张图列出了各种类型的语句的不同职责和调用方法。

iBATIS映射文件是什么

Mapped Statements语句调用图

iBATIS映射文件2.Parameter Maps :

参数映射的配置,它是被用来向一个语句(statement)提供所需参数的配置。每一个Parameter Maps都有一个自己的ID,在需要的时候需要在statement 的 parameterMap属性中提供它的ID。但是对一个语句来说,它并不是必须,在iBATIS中还支持内联参数(Inline Parameter Maps)的形式,我们不需单独写一个Parameter Maps配置,只需要向parameterClass提供参数的类型,可以是元数据类型,复合数据类型,IDictionary数型的弱类型对象(使用key,value的键值对)。在内部访问数据类型的时候只使用#property#的形式访问对应的属性值。

注意:在任何地方使用到的parameterClass类型如果是一个元数据类型(int,string etc),都需要使用#value#的形式的来访问它的值。

iBATIS映射文件3.Result Maps :

返回结果的映射关系配置,就是列与属性的对应关系。在statement中使用resultMap属性来指定一个结果映射。对一个statement来说,resultMap也不是必须的,同样的,它仍然可以被resultClass给代替,因为如果返回出结果数据集的列名跟数据对象的属性相同的话,它会自动去匹配,但是它不保证所有列都被会被正确映射(当某列名在对象中找不对应的属性名,这列值将不被处理)。而resultMap则不同,如果已经在resultMap中定义将要使用到列或属性在结果集或数据对象中不存在,将会被认为是错误的,将会抛出异常。通过上面的表可以看到insert,update,delete三种语句类型是没有resultMap和resultClass,因为原则上来说,它们的操作是没有必要返回结果集。

注意:如果在一个statement中同时指定了resultMap和resultClass属性的话,那将会优先使用resultMap。同时result Map也是一个实现对象复杂查询功能的重要手段,如:result map的继承(与discriminator配合使用),对象的1..1、1..N关系查询。

iBATIS映射文件4.Cache Model :

缓存模型。使用在Cache Model中定义好的缓存机制,只需在查询语句配置的cacheModel属性就可以很容易地缓存查询返回的数据集。在iBATIS中提供了三种的类型的缓存模式(Memory,LRU,FIFO)算法。三种算法主要在于静态过期策略上的不同,而它们都有相同的动态过期依赖策略,即可以设置执行哪些statement时,缓存过期。

注意:iBATIS的缓存模型正常情况是非常好用的,但是因为缓存过期策略上的封装性,它在多个服务器,负载平衡场景下还是有它的局限性。

到此,相信大家对“iBATIS映射文件是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. java ibatis #及$的区别和用法是什么
  2. Hibernate如何映射文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ibatis

上一篇:Linux中如何解决Mount NTFS分区造成的权限问题

下一篇:Oracle RMAN还原时set newname文件名有空格报错怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》