iBATIS.net直接执行sql语句

时间:2022-02-03 23:10:29

在用iBatis.net与数据库打交道的过程中,发现iBatis.net拼接字符串不能直接拷贝然后在dbms里执行(获取runtime时的sql语句都是带@param1,@param2,@param3,...这样的形式)。有时候sql语句一个小小的标点(都怪自己学艺不精,呵呵)都会造成执行错误。其实,直接手写的sql字符串也可以通过iBatis来执行,而且支持select,insert,delete,update和存储过程。下面通过一段简单的代码来说明如何使用iBatis.net直接执行sql语句。

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

Person.xml的方法对应的配置文件如下:

     <!-- 直接执行select语句 -->
    
< statement  id ="ExecuteSelectSql"   parameterClass ="string"  remapResults ="true"  resultMap ="SelectAllResult" >
      $sql$
    
</ statement >

注意:
1、如果你没有设置remapResults="true",测试时你会发现,尽管你传入的sql语句虽然不同,但总是执行返回第一次传入的sql语句的结果。原因就是iBatis.net的缓存设置在起作用,所以,一定要设置remapResults="true"。
2、$sql$的写法是安全的写法,<![CDATA[   $sql$   ]]>也比较常见,但是#sql#的写法可能自动生成'',sql语句就会有问题。所以最保险的方式就是采取$sql$的写法。
ps:示例使用iBatis.net直接成功执行select和insert操作。里面有一个分页的小功能。是笔者花了一天时间测试通过(就是常见的select top 方式),扩展性不是很好,但是很实用,而且很好调试,希望对你有帮助。
分页部分代码:

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

查询条件和sql拼接部分代码:
1、查询基类

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

2、实际查询类

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

在页面中的调用:

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

页面的cs代码:

iBATIS.net直接执行sql语句iBATIS.net直接执行sql语句Code

最后,希望您能给出改进意见和建议。
Demo下载:demo