iBATIS.net复用sql语句片段

简介:

这一阶段累坏哥哥我鸟,偶很久没有感觉这么“充实”过了。尤其是哼唧哼唧地写了不少sql语句,好邪恶啊.偶现在所干的活,通常都是这样的:在一个拼接sql的xml文件内,繁琐的列名和别名,眼花缭乱的动态条件拼接......如果这部分工作都交给orm自动去做该多好啊。好了,言归正传。用iBatis.net开发的时候,sql语句通常都会有重复的片段,比如,我们现在要select一个表的某些列,但是查询条件不同。如果一个select的statement拼接sql语句不能满足查询(这个还是很正常的),我们通常都会写两个甚至多个statement。这个时候select列名这种sql语句就会不可避免地出现重复。可能你会说复制粘贴不花时间,很快啊。但是,正像某些高人所讲的那样,复制粘贴是所有程序员的毒药(记不清楚原话了,大意。非常惭愧的是,笔者在实际的开发中复制粘贴了不少代码,虽说一干这种事我就条件反射地排斥,不过,适当地复制粘贴是不可避免地,谁让咱是程序员呢,呵呵)。我们肯定想到要用一种更好的方法解决重复的sql语句问题。没错,就是iBatis.net已经提供的复用sql片段功能,官方解释见这篇的3.3.3.1“Reusing SQL Fragments”。下面摘抄一下原文的一段查询的sql语句:

Code

说明:

1、sql和include标签
这个没什么好说的,就是iBatis的规范,都这么写。
2、注意点:
正像你看到的那样,sql标签组装的公用sql语句无法传递参数;分割公共sql语句也是一个技巧,看开发者的个人习惯,同样是查询条件,有人就喜欢放进公共部分,有人就喜欢拆分;命名也是门学问,公共sql语句的id如果在一个xml文件中出现了,其他的地方如果重名,可能因为配置原因给开发者带来不必要的麻烦。因为在运行时,iBatis可能会抛出异常并提升您已经存在一个相同的映射id,这是笔者开发中实际出现过的。
自从改用iBatis以后,也不知是喜是忧。之前比较熟练的一款orm,潇洒有余(几乎不用写sql和xml),但是灵活不足,这点必须承认。而iBatis确实非常灵活和方便,但是实际的开发情况往往物极必反,sql写了很多很多。在维护老系统的sq语句l时,发现自己现在写的那一坨也有点“乱棍打死老师傅”的趋势,哈哈。如果将来有人维护偶写的sql语句,要是累的挂了就算了,如果命硬还活着,在累的吐血的时候,千万表拍偶啊。






本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/11/21/1602808.html,如需转载请自行联系原作者

目录
相关文章
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
264 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
12月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
690 3
|
9月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
2672 11
|
12月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
SQL 流计算
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
136 2
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
273 0
|
SQL 程序员 数据库
总结查看 .NET EF 生成的 SQL 的 3 种方式,亲测可用
总结查看 .NET EF 生成的 SQL 的 3 种方式,亲测可用
325 0
|
SQL
.Net Core EF 日志打印 SQL 语句
.Net Core EF 日志打印 SQL 语句
265 0
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
215 0
|
SQL Java 数据库连接
【Mybatis】动态sql之sql的复用
【Mybatis】动态sql之sql的复用
268 0

热门文章

最新文章