ibatisNet 数据访问框架

2023-11-03

author:skate

time:2010-03-04


 

 ibatisNet 数据访问框架

 

介绍欢迎来到iBATISNet Database Layer!这个框架将让你能够更好的在dotnet应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。

SQL Maps Sql Maps是这个框架中最激动人心的部分,它是整个iBATIS Database Layer的核心价值所在。通过使用Sql Maps你可以显著的节约数据库操作的代码量。SQL Maps使用一个简单的XML文件来实现从实体到SQL statements的映射。跟其他的框架或者对象映射工具相比,SQL Maps最大的优势是简单。它需要学习的东西很少,在连接表或复杂查询时也不需要复杂的scheme,使用SQL Maps,你可以自由的使用SQL语句。

Data Access Objects (DAO)

当我们开发灵活的DOTNET应用时,有一个好主意就是通过一个通用API层把实体操作的细节封装起来。Data Access Objects允许你通过一个简单接口的来操作数据,从而隐藏了实现的细节。使用DAO,你可以动态配置你的应用程序来访问不同的实体存储机制。如果你有一个复杂的应用需要用到几个不同的数据库,DAO可以让你建立一个一致的API,让系统的其他部分来调用。

Examples

NPetShop Example Application 一个在线商店。

SQL Maps (IBatisNet.DataMapper.*)

概念

SQL Map API允许程序员很简单的把DOTNET对象映射到PreparedStatement参数或者ResultMap。SQL Maps的机制很简单,提供一个框架,来实现用20%的代码来实现80% ADO.NET的功能。

How does it work?

SQL Maps提供一个简单的框架,通过XML描述来映射DOTNET实体类,MAP implementations甚至原始类型的包装(String,Integer等)到Ado.net PreparedStatement。想法很简单,基本的步骤如下:

1) 提供一个参数,无论是对象还是一个Nativel类型。参数将被用于设置sql语句或存储过程的运行时的值

2) 通过传送参数和在你的xml描述中的声明名字或者存储过程来执行映射。这一步将是魔术般的步骤。框架将会准备sql声明或者存储过程,用你的参数设置运行时数据值,执行sql语句或者存储过程,返回结果。

3) 在更新的时候,更新的行数将会被返回。在查询的时候,返回的将是一个对象或者对象的集合。象参数,结果对象,或者对象的集合,可以是一个plan-old对象或者native类型。



Data Access Objects 在开发健壮的 Dotnet 应用程序时,用分层的持久性实现的详细说明通常是一个好主意。Data Access Objects(DAO)允许您创建简单的组件,提供对数据的访问,而无需将实现的详细说明展示给应用程序的其余部分。使用 DAO 可以动态地配置应用程序,从而使用不同的持久性机制。如果您有一个涉及许多不同的数据库和持久性方法的复杂程序,那么 DAO 可以帮助您创建一个用于您将使用的其他应用程序的持久性 API。

通过允许将动态的、可插入的 DAO 组件很容易地换入换出,可以使用 iBATIS Data Access Objects API 帮助隐藏持久性层实现的细节,不让其他应用程序知道。例如,您可以使用两个特殊的 DAO,一个使用 iBATIS SQL Maps 框架将对象持久存储到数据库中,另一个则使用NHibernate 框架。类似的一个例子将是一个为另一个 DAO 提供缓存服务的 DAO。根据使用情况(例如,有限的数据库性能与有限的内存相对),您可以插入这个缓存 DAO,或者可以使用标准的非缓存 DAO。这些例子展示了 DAO 模式提供的一些便利;然而,DAO 提供的安全性更为重要。DAO 模式可以保护应用程序,使之不必与特定持久性方法捆绑在一起。在当前解决方案不适合(甚至不可用)的情况下,可以创建新的 DAO 实现来支持新的解决方案,而不必修改其他应用层中的任何代码。
----end----
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ibatisNet 数据访问框架 的相关文章

  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

    我正在开发一个新的 Java Web 应用程序 并且正在探索保存数据的新方法 对我来说是新方法 我主要有 JPA 和 Hibernate 的经验 但是 除了简单的情况之外 我认为这种完整的 ORM 可能会变得相当复杂 另外 我不太喜欢和他们
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • 如何使用sql作为xml路径('')但保留回车符

    我有下面的代码 select select cast Narrative as Varchar max char 13 from officeclientledger where ptmatter matter and ptTrans 4
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • 优化 SQL Server 上的删除

    Deletesql server 上的有时很慢 我经常需要优化它们以减少所需的时间 我一直在谷歌上搜索一些关于如何做到这一点的提示 并且我发现了各种各样的建议 我想知道你最喜欢和最有效的驯服删除野兽的技术 以及它们如何以及为什么起作用 到目
  • 在 SELECT IN 中使用 Oracle 参数时出现问题

    我在将一串数字插入sql查询时遇到问题 SELECT FROM tablename a WHERE a flokkurid IN 3857 3858 3863 3285 ORDER BY sjodategund rodun or SELEC
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一

随机推荐

  • springboot+mysql租房管理平台-计算机毕业设计源码54739

    摘 要 2l世纪 随看全球经济的逢勃发展 众多经济字豕纷纷提出了新的管理理念 信息管理 强调了用信息支持决策 随着社会的发展 人们又提出了一个新的名词 管理信息系统 管理信息系统在强调信息的现代社会中变的越来越普及 它是一个利用计算机软硬件
  • Java软件编程开发:Mybatis和Url路由详细解析

    1 3 Mybatis MyBatis 本是apache的一个开源项目iBatis 2010年这个项目由apache software foundation 迁移到了google code 并且改名为MyBatis MyBatis是一个基于
  • 拉伸无锯齿的SVG图片

    package com moonlight example import com larvalabs svgandroid SVG import android content Context import android graphics
  • 电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒

    不知道什么时候开始 我电脑C盘的系统数据存储文件夹programdata 不知不觉就没了 找不到了 programdata文件夹为存储系统数据文件的 这个文件不见了 而且我打开了显示隐藏文件和文件夹还是没有显示 然后我重启电脑 杀毒软件报i
  • springboot 整合springmvc

    项目结构 引入web启动器 pom xml
  • ora-01536 超出表空间 'xxx' 的空间限额

    解决方案 1 alter user 你的用户名 quota 2g on 你建表的表空间的名字 有限制 2 alter user 你的用户名 quota unlimited on 你建表的表空间的名字 无限制 知识总结 表空间的大小与用户的配
  • 矩阵特征值与行列式、迹的关系

    矩阵特征值与行列式 迹的关系 from http www cnblogs com AndyJee p 3737592 html 矩阵的特征值之积等于矩阵的行列式 矩阵的特征值之和等于矩阵的迹 简单的理解证明如下 1 二次方程的韦达定理 请思
  • Python股票历史数据预处理(二)

    Python股票历史数据预处理 二 从网上下载的股票历史数据往往不能直接使用 需要转换为自己所需要的格式 下面以Python代码编程为工具 将csv文件中存储的股票历史数据提取出来并处理 处理的数据结果为是30天涨跌幅子数据库 下载地址为
  • 网桥、网关、网卡之间的区别

    如果要在全世界范围内把数以百万计的网络都互连起来 并且能够互相通信 那么这样的任务一定非常复杂 将网络互相连接起来要使用一些中间设备 物理层使用的中间设备叫转发器 数据链路层使用的中间设备叫做网桥 网络层使用的中间设备叫做路由器 在网络层以
  • 应用不能远程访问RabbitMQ的5672端口

    目录 1 背景 2 环境 3 步骤 1 添加用户 2 设置权限 3 停止服务 4 修改配置 5 启动rabbitmq的服务 6 应用配置 4 参考文档 1 背景 在使用SpringBoot开发的应用中 使用到RabbitMQ 需要通过567
  • 前端知识整理

    1 闭包 JS 中的闭包是什么 1 什么是闭包 函数和函数内部可以访问的变量组合一起就叫做闭包 闭包
  • 量化商品,计算相似度

    量化商品 计算相似度 如何精准寻找竞品 相似度算法 数据源及具体实现 思考与应用 如何精准寻找竞品 一般情况下 竞品的识别方式 是通过价格 规格 成分 主要宣传点 销量等维度进行判断的 然而这种方式存在一定滞后性 并且过于主观 同时没有监控
  • 关于Java虚拟机运行时数据区域的总结

    Java虚拟机运行时数据区域 程序计数器 Program Counter 程序计数器作为一个概念模型 这个是用来指示下一条需要执行的字节码指令在哪 Java的多线程实际上是通过线程轮转做到的 如果是一个单核的机器 或单cpu 严格意义上在一
  • ubuntu安装多个Cuda、Cuda软链接修改

    每次装环境 都得百度 索性自己写个参考吧 配置深度学习环境三部曲 1 Nvidia驱动安装 推荐高一些的版本 但别最高版本 难度 难搞 2 Cuda CuDNN安装 按需求来 3 Anaconda 本文主要介绍Cuda和CuDNN的安装 会
  • 大数据学习必须掌握的五大核心技术有哪些?

    大数据技术的体系庞大且复杂 基础的技术包含数据的采集 数据预处理 分布式存储 NoSQL数据库 数据仓库 机器学习 并行计算 可视化等各种技术范畴和不同的技术层面 首先给出一个通用化的大数据处理框架 主要分为下面几个方面 数据采集与预处理
  • typora图片上传解决办法(可用)

    作者 杂食老翟 链接 https www zhihu com question 501075370 answer 2683954521 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 Typora是一款非常好
  • 进程间通信——System V IPC 之进程信号量

    51 1 进程信号量 51 1 1 信号量 本质上就是共享资源的数目 用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量 为了便于大量共享资源的操作引入了信号量集 可对所有信号量一次性操作 对信号量集中所有操作可以
  • COLMAP生成MVSNet数据集

    一 colmap2mvsnet py COLMAP可以给图像数据集标定一套相机外参及视图选择 如果想用COLMAP导出的结果输入MVSNet测试 需要把数据集 图片 相机参数等 转化为MVSNet的输入格式 MVSNet的作者yaoyao在
  • 【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 1 IOC DI配置管理第三方bean 1 1
  • ibatisNet 数据访问框架

    author skate time 2010 03 04 ibatisNet 数据访问框架 介绍欢迎来到iBATISNet Database Layer 这个框架将让你能够更好的在dotnet应用中设计和实现实体层 这个框架有两个主要的组成