随笔分类 -  框架学习----IBatis.Net

摘要:mybatis其实就是ibatis的升级版本不仅能在java上使用,asp.net照样可以使用mybatis来开发程序。mybatis是一个比较小巧的ORM框架,类似hibernate。自己试了一下用法和java上的mybatis差不多。这次在.net的平台上我也来小试牛刀,弄个小程序出来看看,开发... 阅读全文
posted @ 2015-05-24 20:06 awp110 阅读(325) 评论(0) 推荐(0)
摘要:使用IBATISNET免不了用到lazyload特性,这样可以实现延迟加载,提高数据库访问效率。但使用lazyload的时候要小心,别忘了给需要lazyload的属性加上virtual关键字哦,不然的话无法实现延迟加载的(我发现在单步调试的时候反而可以延迟加载)。映射文件:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><resultMapid="ApplicationResult"class="Appli 阅读全文
posted @ 2011-11-14 10:14 awp110 阅读(373) 评论(0) 推荐(0)
摘要:一般在Ibatis的动态SQL部分,使用例如#id#,$id$这样的格式,1、在复杂动态SQL语句中,类似#field#,如果field变量值为id,则Ibatis会将#field#转换为‘id’; 例如:<statement id ="getProduct" resultMap="get-product-result"> SELECT * FROM PRODUCT<dynamic prepend="WHERE"> <isNotEmpty property="description"& 阅读全文
posted @ 2011-05-29 15:40 awp110 阅读(624) 评论(0) 推荐(0)
摘要:一、什么是iBATIS?iBATIS是一个简单但完整的框架,它使您轻松地映射你的对象到您的SQL语句或存储过程。iBATIS的框架目标是获得80%的数据访问功能只使用20%的代码。开发人员常常在一个应用程序的对象之间建立映射,iBATIS是一种data mapper即一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。译注:在C#中通常在类的属性(Property)与表的列间进行映射。iBATIS则与之不同,它不是直接在类与数据表或字段与列之间进行关联,而是把SQL语句的参数(parameter)和返回结果(result)映射至类。iBATIS是处于类和数据表之间的一个中间层, 阅读全文
posted @ 2011-05-29 15:17 awp110 阅读(404) 评论(0) 推荐(0)
摘要:现在的使用IBatis。顺序可以是这样,首先项目经理会分析整个项目,可以分成为几个对象,每个对象具有什么属性,什么方法。同时会用visio画出UML图来。这样可以说把面向对象的优势完全体现出来了。 然后程序员会根据UML图来操作对象,实现每个对象的属性和方法。这样就可以完全脱离数据库,去考虑程序的问题。这种开发方式特别适合于团队开发,团队中有专门的人去负责数据的建立,他可以根据项目中的Maps图清晰的知道每个数据表中的字段Separating SQL code from programming codePassing input parameters to the library classe 阅读全文
posted @ 2011-05-28 22:05 awp110 阅读(632) 评论(0) 推荐(0)
摘要:iBATIS.net获取运行时sql语句 【本文原创,第一次离首页如此之近。发在候选区攒攒rp,管理员看着不合适可以撤下。】 虽然只在iBatis的世界里小打小闹匆匆数月,却历经数次与领导和同事激辩,再通过不懈努力学习和开发积累,楼猪终于被它小巧而不失强大,稳定而不失灵活所折服。作为80后顽固、偏执和nc一族,楼猪一向保守认为自己是美貌与智慧并存的。仗着天资聪慧,在之前的“iBatis.net直接执行sql语句”里曾经公然抱怨iBATIS对sql语句的直接查看灰常的不友好,调试不方便,排除错误非常考验眼神,很重要的一条(甚至应该算是楼猪一开始就讨厌排斥iBatis的罪魁祸首)就是参数化的sql 阅读全文
posted @ 2011-05-27 22:52 awp110 阅读(523) 评论(0) 推荐(0)
摘要:http://code.google.com/p/mybatisnet/官网 阅读全文
posted @ 2011-05-22 19:48 awp110 阅读(153) 评论(0) 推荐(0)
摘要:iBATIS.net调用存储过程前言:这篇整理好已经很久了,一直觉得还有很多需要改进的地方,然后拖着等待完善,nnd,竟然等成跨年贴了。现在把它发布一下,将来自己可能会用到,同时希望对您有帮助。一、存储过程分类这里我们把存储过程大致分为两类:查询类型的存储过程和更新类型的存储过程。1、查询类型的存储过程可以直接理解为Select查询类型的存储过程,其实任何不曾改变数据库数据的存储过程都可以归为这一类。2、更新类型的存储过程这一类型的您可以直接理解为Insert,Update和Delete类型的存储过程,其实任何改变数据库数据的存储过程都可以归为这一类。ps:上面这两点纯粹是个人片面理解,难免有 阅读全文
posted @ 2011-05-22 14:04 awp110 阅读(406) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2011-05-21 19:21 awp110 阅读(290) 评论(0) 推荐(0)
摘要:关键词:IBatis.NET Access mdb cast typeHandler 类型转换这两天被一个问题折磨得死去活来,终于解决了,写下来以备参考:问题是这样的:我在项目中使用了IBatis.Net,数据库使用的是 MS Access。因为Access数据库没有float或double类型,只有Currency类型可以用作浮点数。所以我定义了类似如下的对象,表,以及SQL语句:1.对象 public class Mark { public string Subject{...} public int Year{...} public double Point{...} }2.数据库Mar 阅读全文
posted @ 2011-05-21 18:55 awp110 阅读(980) 评论(0) 推荐(0)
摘要:大概一年左右的时间里Club数据库的CPU一直处于很高的负荷中,从40%一直攀升到如今的80%,随着数据量的增加,负担越来越重,已经频繁超时,且濒临无法服务的边缘。经长期的调查发现这是Ibatis.net的一个性能问题(同样适用于Ibatis)。问题是这样的:Club的主要业务表是Comment表,其中的主键是一个varchar(36)类型的Guid,当每次搜索一条记录时我们会使用这样的一个statement:<select id="GetComment" parameterClass="string" resultMap="Commen 阅读全文
posted @ 2011-05-21 15:43 awp110 阅读(270) 评论(0) 推荐(0)
摘要:Castle是另外一个框架,包含了AOP、IOC、ORM等多个方面,其中的Castle.DynamicProxy可以实现动态代理的功能,这个也是很多框架的基础。在IBatis.Net中就是使用了Castle.DynamicProxy来实现数据库连接等动态操作的。同时在NHibernet等其他框架中也使用到了这个技术。下面我通过一个简单例子来看一下如何在我们的代码中调用Castle.DynamicProxy:一般情况下要有三个类:1、接口类:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceGSpring. 阅读全文
posted @ 2011-05-21 15:39 awp110 阅读(394) 评论(0) 推荐(0)
摘要:其实调用方式比较简单,主要也就是两种类型的存储过程:1、更新类型的存储过程2、查询类型的存储过程下面就来看看具体的调用方式:1、更新类型的存储过程sp_InsertAccount:CREATEPROCEDURE[dbo].[sp_InsertAccount]--Addtheparametersforthestoredprocedurehere@Account_IDint,@Account_FirstNamevarchar(32),@Account_LastNamevarchar(32)ASBEGINinsertintoaccounts(account_id,account_firstname, 阅读全文
posted @ 2011-05-21 15:39 awp110 阅读(232) 评论(0) 推荐(0)
摘要:在IBatis.Net中可以通过配置文件动态选择数据库、动态选择Dao对象。Dao对象也就是操作数据库的类,通过配置文件我们可以选择DataMapper的方式、Ado的方式、NHibernet的方式以前其他第三方的方式来操作数据库。有利于系统的灵活性和可扩展性。通过分析动态选择Dao的设计可以加深对IBatis.Net的理解,更好的使用它,同时也可以借鉴它的好的设计模式,应用到我们的程序开发中去。源代码是最好的分析方式,下面是一些重点代码和说明:前提:需要在dao.config中配置:<daoFactory><daointerface="GSpring.Dao.In 阅读全文
posted @ 2011-05-21 15:38 awp110 阅读(306) 评论(0) 推荐(0)
摘要:在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率。在IBatis.Net中提供了方便的数据库查询方式。在Dao代码部分主要有两种方式:1、查询结果为一个对象:ISqlMappersqlMap=sqlMapDaoSession.SqlMap;return(Account)sqlMap.QueryForObject("GetAccountViaColumnName",accountID);2、查询结果为一个列表:ISqlMappersqlMap=sqlMapDaoSession.SqlMap;return(ArrayList)sqlM 阅读全文
posted @ 2011-05-21 15:37 awp110 阅读(249) 评论(0) 推荐(0)
摘要:在上一篇文章中我提到了三种方式,都是各有利弊:第一种方式当数据关联很多的情况下,实体类会很复杂;第二种方式比较灵活,但是不太符合OO的思想(不过,可以适当使用);第三种方式最主要的问题就是性能不太理想,配置比较麻烦。下面是第四种多表查询的方式,相对第二种多了一点配置,但是其他方面都很好(当然可能还有其他更好地解决方法,希望能多提宝贵意见-_-)例子还是一样:两张表Account和Degree,使用Account_ID关联,需要查出两张表的所有纪录首先:修改实体类,增加以下属性:privateDegree_degree;publicDegreeDegree{get{return_degree;} 阅读全文
posted @ 2011-05-21 15:37 awp110 阅读(195) 评论(0) 推荐(0)
摘要:在IBatis中提供了数据库缓存的模式,可以提高访问效率。对于一些不常更新的表可以直接利用IBatis的缓存方式。要使用IBatis的数据库缓存,只要利用配置文件就可以了,实现起来比较简单:<selectid="GetCachedAccountsViaResultMap"resultMap="account-result"cacheModel="account-cache">select*fromAccountsorderbyAccount_ID</select>最主要的就是cacheModel="a 阅读全文
posted @ 2011-05-21 15:36 awp110 阅读(245) 评论(1) 推荐(0)
摘要:在IBatis中我们可以灵活的选择DAO类型,也就是可以在底层选用不同的数据库操作方式。有常规方式、配置文件的方式、Hibernet的方式等:1、常规方式和我们之前的ADO.NET开发较为类似,都是将sql语句写在cs代码中进行调用:首先通过配置文件初始化:DomDaoManagerBuilderbuilder=newDomDaoManagerBuilder();builder.Configure("dao"+"_"+ConfigurationManager.AppSettings["database"]+"_"+ 阅读全文
posted @ 2011-05-21 15:35 awp110 阅读(349) 评论(0) 推荐(0)
摘要:最近这段时间一直在用IBatis来进行开发。现在把这段时间的一些开发心得写出来,跟大家一起分享。首先,IBatis可以说转变了我以前的一些思想。我们以前开发项目的时候,总是先建立好数据库,分析清楚表与表之间的关系,才开始根据这些表进行实际的开发。实际上并没有完全把面向对象的优势展现出来。现在的使用IBatis。顺序可以是这样,首先项目经理会分析整个项目,可以分成为几个对象,每个对象具有什么属性,什么方法。同时会用visio画出UML图来。这样可以说把面向对象的优势完全体现出来了。 然后程序员会根据UML图来操作对象,实现每个对象的属性和方法。这样就可以完全脱离数据库,去考虑程序的问题。这种开发 阅读全文
posted @ 2011-05-21 15:33 awp110 阅读(202) 评论(0) 推荐(0)
摘要:iBatis中的动态查询还是比较好用的如果想深入学习,可以参考 Manning.iBATIS.in.Action.Jan.2007下面给出几个例子和dtd定义:<select id="selectDispatchedKey" parameterClass="KeyAndKeyFlowInfo" resultMap="KeyAndKeyFlowResult"> select distinct KEY_ID, USER_ID, INITIATOR, INIT_DATE, INITIATOR_EMAIL, SGS_KEY.BRA 阅读全文
posted @ 2011-05-21 15:22 awp110 阅读(659) 评论(0) 推荐(0)