IBatisNet之获取和操作SQL语句
时间:2022-04-23
本文章向大家介绍IBatisNet之获取和操作SQL语句,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
IBatisNet和其他的ORMapping的工具相比较,可以说是一个sqlmap,所以在Why use iBATIS SQL Maps? 中有一条理由是 You already know SQL, why waste time learning something else? 所以在我们的实际框架中更多的地方需要得到SQL语句。在我的架构中有这样的接口:
复杂的SQL主要是查询,统计这样的功能接口:
DataTable GetDataTable(string tag, object paramObject) ;
string GetSql(string tag, object paramObject);
这样我们对于复杂的查询,统计等就可以使用DataTable来映射查询结果,这里介绍一下string GetSql(string tag, object paramObject)的实现。 代码如下:
public string GetSql(string tag, object paramObject)
{
IStatement statement = _sqlMap.GetMappedStatement(tag).Statement;
RequestScope request = statement.Sql.GetRequestScope(paramObject,
new SqlMapSession(_sqlMap.DataSource));
return request.PreparedStatement.PreparedSql;
}
statement用于insert,Select,Update用于检查标识符,然后根据paramObject和tag组合成SQL.。获取到了SQL,执行SQL和ADO.NET是一样的。IBatisNet只是包装了ADO.NET,使用的ADO.NET的接口方式实现代码,也就是基于接口编程。工作中总是发现很多的同事说不喜欢使用接口,说什么使用类就可以为什么要用接口呢。其实在工作中很多还是以结构化的思想在编写向对象的代码,类只是显得有点面向对象。这里只是发一下牢骚,不针对任何人。实现DataTable GetDataTable(string tag, object paramObject)
接口的代码就不写了,我想大家也知道怎么写了。
- 让IoC动态解析自定义配置(提供基于Unity的实现)
- 如何让ASP.NET默认的资源编程方式支持非.ResX资源存储
- 在VS中通过建立依赖关系使文件结构更清晰
- 一个关于ConfigurationManager.GetSecion方法的小问题
- 追踪记录每笔业务操作数据改变的利器——SQLCDC
- 一个完整的用于追踪数据改变的解决方案
- C# 4.0新特性-"协变"与"逆变"以及背后的编程思想
- 通过内存分析工具来证明字符串驻留机制
- 如果在BackgroundWorker运行过程中关闭窗体…
- 从数据到代码——基于T4的代码生成方式
- 解决T4模板的程序集引用的五种方案
- 编写T4模板进行代码生成无法避免的两个话题:"Assembly Locking"&"Debug"
- 从yield关键字看IEnumerable和Collection的区别
- 让“链式调用(方法链)”更加自然一点
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ZLT-MP v4.1.0 发布
- 高并发系统三大利器之限流
- XtraBackup工具详解 Part 2 xtrabackup安装
- XtraBackup工具详解 Part 4 XtraBackup权限及配置
- XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备
- XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复
- [修正]XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复
- XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份
- XtraBackup工具详解 Part 8 使用innobackupex对增量备份进行恢复
- MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制
- MySQL复制全解析 Part 3 MySQL半同步复制设置
- MySQL 复制全解析 Part 4 使用备库搭建MySQL复制
- MySQL复制全解析 Part 5 MySQL GTID的格式和存储
- MySQL复制全解析 Part 6 MySQL GTID 生命周期
- MySQL复制全解析 Part 7 gtid_next和gtid_purged系统变量解析