2009年1月19日
摘要: 作为一个o/r mapping组件,ibatis通过反射(reflect)完成对象的持久化, 如果要对数据进行加密,那么切入点就在reflect上, 思路就是当ibatis通过reflect给对象属性赋值时,我们解密数据,反之加密数据。 那么如何切入了?先跟踪源代码看看 :) 如何跟踪源代码这里就不繁述了,这里列出几个重要的对象/接口: 1. dotnetobjectdataexchange:... 阅读全文
posted @ 2009-01-19 20:13 arnold zhang 阅读(411) 评论(0) 推荐(0) 编辑
摘要: ibatis.net中提供了方便的日志处理,可以输出sql语句等调试信息。 常用的有两种: 1、输出到控制台: 2、利用log4net输出到文件: ... 阅读全文
posted @ 2009-01-19 20:13 arnold zhang 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 调用方式比较简单,主要也就是两种类型的存储过程: 1、更新类型的存储过程 2、查询类型的存储过程 下面就来看看具体的调用方式: 1、更新类型的存储过程 sp_insertaccount: create procedure [dbo].[sp_insertaccount] -- add the parameters for the stored procedure here @a... 阅读全文
posted @ 2009-01-19 20:12 arnold zhang 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 发现一个好用的ibatis.net生成工具,可以根据数据库自动生成domain和xml文件,名称是mygeneration。 我试用了一下,效果不错。 详细介绍参见它的主页:http://www.mygenerationsoftware.com/portal/default.aspx 支持的语言为:c#,vb.net 支持的数据库有:microsoft sql, oracle, ibm d... 阅读全文
posted @ 2009-01-19 20:11 arnold zhang 阅读(943) 评论(1) 推荐(0) 编辑
摘要: castle是另外一个框架,包含了aop、ioc、orm等多个方面,其中的castle.dynamicproxy可以实现 动态代理的功能,这个也是很多框架的基础。在ibatis.net中就是使用了castle.dynamicproxy来实现数据库连接等动态操作的。同 时在nhibernet等其他框架中也使用到了这个技术。 下面我通过一个简单例子来看一下如何在我们的代码中调用castle.dyna... 阅读全文
posted @ 2009-01-19 20:10 arnold zhang 阅读(613) 评论(0) 推荐(1) 编辑
摘要: 在ibatis.net中,很多操作都被隐藏起来了,比如对数据库的连接和事务处理,都在框架中处理了。那么框架中具体是怎么处理的呢?有没有值得借鉴的地方?我们能不能跳过框架自己处理呢? 首先我们看一下在ibatis.net中的一个常规的数据库查询操作: accountbusiness的调用代码: //取得静态的daomanager idaomanage... 阅读全文
posted @ 2009-01-19 20:09 arnold zhang 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 有时我们需要查看ibatisnet中statement生成的实际sql语句, 可以通过下面的方式取得: public static string getsql(string statementname, object paramobject) { isqlmapper mapper = mapper.instance(); imappedstatement state... 阅读全文
posted @ 2009-01-19 20:09 arnold zhang 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 在ibatis.net中可以通过配置文件动态选择数据库、动态选择dao对象。 dao对象也就是操作数据库的类,通过配置文件我们可以选择datamapper的方式、ado的方式、nhibernet的方式以前其他第三方的方式来操作数据库。有利于系统的灵活性和可扩展性。 通过分析动态选择dao的设计可以加深对ibatis.net的理解,更好的使用它,同时也可以借鉴它的好的设计模式,应用到我们的程序开发中... 阅读全文
posted @ 2009-01-19 20:08 arnold zhang 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 在ibatis.net中,查询后的结果会自动将每一个字段映射成domain中的一个属性值,这个映射的过程是通过typehandlerfactory类进行的,在程序初始化时注册了一些系统类和类型转换类之间的关系: handler = new nullablebooleantypehandler(); this.register(typeof(boo... 阅读全文
posted @ 2009-01-19 20:07 arnold zhang 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 使用ibatisnet当对ntext类型的字段插入超长的文本时,报错误"当前命令发生了严重错误。应放弃任何可能产生的结果" 查了一下资料,当使用命名参数式sql语句时,对于ntext类型的参数,如指定length,则可避免上面的问题, 但ibatisnet的resultmap的property里只有dbtype而没有length,不知为何不提供? nhibernate里就有类似length的属性。... 阅读全文
posted @ 2009-01-19 20:06 arnold zhang 阅读(393) 评论(0) 推荐(0) 编辑