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

 list;
        }

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 方式),扩展性不是很好,但是很实用,而且很好调试,希望对你有帮助。
分页部分代码:

 sb.ToString();
        }
    }
}

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

.Empty;
        }
    }
}

2、实际查询类

 result;
        }
    }
}

在页面中的调用:


页面的cs代码:

 ex;
            }
        }
}
}

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

相关文章:

  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2021-10-01
猜你喜欢
  • 2021-08-10
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-27
相关资源
相似解决方案