iBatis.Net(3):创建SqlMapper实例

在iBatis中,我们把所有的配置和映射都放在XML文件里(当然,这未必是一定需要的),但是,XML文件不是可执行的,所以,如果我们要在我们的c#代码里使用iBatis的映射,就必须通过一个类来加载、分析、使用它。所以在iBatis中,提供给了我们很多的API来做这些事情,配置以及映射文件的加载和监视是在创建SqlMapper实例的时候进行的,而所有的数据映射的工作以及我们对数据库的操作,是需要在SqlMapper实例上调用方法来完成的,SqlMapper实例具有多线程并且长期活动的性质,在iBatis外界,可以随处使用这样的方法来调用得到SqlMapper实例

ISqlMapper mapper=Mapper.Instance();

在我们第一次调用Mapper.Instance()的时候,DomSqlMapBuilder对象会通过解析SqlMap.config(默认路径和命名)文件来出创建SqlMapper实例,在 以后的调用中,则会使用缓存中的mapper对象,那么,如果我们在应用程序运行期间,修改了我们的映射文档,结果是怎样的呢。如果我们使用Mapper.Instance()的方法来得到mapper对象,则在这个过程中,默认使用了DomSqlMapBuilder.ConfigureAndWatch的方法来监视配置文件的状况,如果期间出现了改动,SqlMapper对象会被安全的重新载入,当然,如果你不喜欢iBatis替你做这件事情,则可以通过

ISqlMapper mapper=builder.Configure()

来获取sqlMapper实例

SqlMapper.Config文档的加载

iBatis提供了多种方法对SqlMapper.Config文档的内容进行加载,前面我们讲过默认情况下SqlMapper.Config的存放位置,那么如果我们不是放在了默认位置或者不是默认的文件名该怎么办呢

在默认情况下,我们可以使用这样的方法得到SqlMapper实例

ISqlMapper mapper=builder.Configure()

其实这个Configure可以接受一个参数,他可以是String类型,FilePath对象,Uri对象XmlDocument对象,甚至是Stream类型

比如

String str=”file:\\c:\another.config”;
builder.Configure(str);

同样,如果在使用ConfigureAndWatch方法加载并监视映射文档的情况下,这个方法需要一个ConfigureHandler作为回调委托的参数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂烩

spring的事物配置 原

    xml配置这里不细说了,这里主要讲的是注解方式。     需要注意的是:        @Transactional只能被应用到public方法上, ...

271
来自专栏腾讯数据库技术

听原作者为你深度解读InnoDB批量建索引原理

1543
来自专栏noteless

[三]java8 函数式编程Stream 概念深入理解 Stream 运行原理 Stream设计思路

        流不是存储元素的数据结构;相反,它通过一个计算操作的管道,从一个数据源,如数据结构、数组、生成器函数或i/o通道中传递元素

765
来自专栏从零开始学自动化测试

python接口自动化21-规范的API接口文档示例

前言 接口文档到底长啥样?做接口测试最大的障碍在于没有接口文档,很多公司不注重接口文档的编写,导致测试小伙伴没见过接口文档。 运气好一点的测试小伙伴可能厚着脸皮...

5208
来自专栏程序你好

ASP.NET Core MVC 概述

772
来自专栏Golang语言社区

Golang记录、计算函数执行耗时、运行时间的一个简单方法

先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法 func TimeoutWarning(tag, detai...

3296
来自专栏陈本布衣

Spring基础篇——通过Java注解和XML配置装配bean

自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应用程序维护,而是引用了第三方的类库,这个时候自动装配便无法实...

3926
来自专栏nnngu

百度搜索 “Java面试题” 前200页(面试必看)

本文中的题目来源于网上的一篇文章《百度搜索 “Java面试题” 前200页》,但该文章里面只有题目,没有答案。因此,我整理了一些答案发布于本文。本文整理答案的原...

50911
来自专栏小怪聊职场

爬虫课堂(十六)|Scrapy框架结构及工作原理

2485
来自专栏架构说

缓存策略之LRU实现及分析

LRU定义 Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时, 就需要挑选并舍弃原有的部分内容,从而腾出空间...

30010

扫描关注云+社区