2009年1月19日
摘要: ibatis.net中提供了方便的日志处理,可以输出sql语句等调试信息。 常用的有两种: 1、输出到控制台: 2、利用log4net输出到文件: ... 阅读全文
posted @ 2009-01-19 20:13 arnold zhang 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 作为一个o/r mapping组件,ibatis通过反射(reflect)完成对象的持久化, 如果要对数据进行加密,那么切入点就在reflect上, 思路就是当ibatis通过reflect给对象属性赋值时,我们解密数据,反之加密数据。 那么如何切入了?先跟踪源代码看看 :) 如何跟踪源代码这里就不繁述了,这里列出几个重要的对象/接口: 1. dotnetobjectdataexchange:... 阅读全文
posted @ 2009-01-19 20:13 arnold zhang 阅读(411) 评论(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) 编辑
摘要: 有时我们需要查看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中,很多操作都被隐藏起来了,比如对数据库的连接和事务处理,都在框架中处理了。那么框架中具体是怎么处理的呢?有没有值得借鉴的地方?我们能不能跳过框架自己处理呢? 首先我们看一下在ibatis.net中的一个常规的数据库查询操作: accountbusiness的调用代码: //取得静态的daomanager idaomanage... 阅读全文
posted @ 2009-01-19 20:09 arnold zhang 阅读(612) 评论(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) 编辑
摘要: 在ibatis.net学习笔记五--常用的查询方式 中我提到了一些ibatis.net中的查询,特别是配置文件的写法。 后来通过大家的讨论,特别是anders cui 的提醒,又发现了其他的多表查询的方式。 在上一篇文章中我提到了三种方式,都是各有利弊: 第一种方式当数据关联很多的情况下,实体类会很复杂; 第二种方式比较灵活,但是不太符合oo的思想(不过,可以适当使用); 第三种方式最主要的问题... 阅读全文
posted @ 2009-01-19 20:05 arnold zhang 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 在ibatis中提供了数据库缓存的模式,可以提高访问效率。对于一些不常更新的表可以直接利用ibatis的缓存方式。 要使用ibatis的数据库缓存,只要利用配置文件就可以了,实现起来比较简单: 最主要的就是cachemodel="account-cache",指定缓存的方式,如下,是具体配置缓存的地方: ... 阅读全文
posted @ 2009-01-19 20:03 arnold zhang 阅读(524) 评论(2) 推荐(0) 编辑
摘要: 在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率。 在ibatis.net中提供了方便的数据库查询方式。 在dao代码部分主要有两种方式: 1、查询结果为一个对象: isqlmapper sqlmap = sqlmapdaosession.sqlmap; return (account)... 阅读全文
posted @ 2009-01-19 20:03 arnold zhang 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 在ibatis中我们可以灵活的选择dao类型,也就是可以在底层选用不同的数据库操作方式。有常规方式、配置文件的方式、hibernet的方式等: 1、常规方式 和我们之前的ado.net开发较为类似,都是将sql语句写在cs代码中进行调用: 首先通过配置文件初始化: domdaomanagerbuilder builder = new domdaomanagerbuilde... 阅读全文
posted @ 2009-01-19 20:02 arnold zhang 阅读(913) 评论(0) 推荐(0) 编辑
摘要: 下载地址:http://ibatis.apache.org/dotnetdownloads.cgi 有最新版的ibastis.net的源代码等,还有npetshop的例子(例子比较老) 将npetshop的例子下载好之后,由于原来是基于vs2003的版本,在本地用vs2005打开后编译、运行时有一些问题,主要问题和解决方法如下: 1、转换成vs2005的版本 a、直接打开npetshop.... 阅读全文
posted @ 2009-01-19 20:01 arnold zhang 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 1.优点 简单: 易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了dao框架,可以使我们更容易的开发和配置我们的dal层。 灵活: 通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。 功能完整: 提供了连接管理,缓存支持,线程支持,(分布... 阅读全文
posted @ 2009-01-19 20:00 arnold zhang 阅读(858) 评论(2) 推荐(0) 编辑
摘要: 最近在一个项目中使用了ibatisnet,开始时还真有些不太习惯这种把sql 分离出来的方式,上手后一切都变的方便了许多,尤其喜欢它的动态sql功能(dynamic sql),我相信如果没有动态sql功能,ibatisnet的魅力将大打折扣。下面是我在使用ibatisnet是遇到的一些问题及解决办法,如果你也 遇到过类似的问题,不防大家一起讨论,因使用ibatisnet时间不长,有些想法可能很过于... 阅读全文
posted @ 2009-01-19 19:59 arnold zhang 阅读(683) 评论(0) 推荐(0) 编辑