您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > iBATIS架构开发
技术部培训材料iBATIS架构开发2006-10-27ORMiBATIS架构开发1iBATIS介绍2iBATIS的简单使用3DataMaps4一、ORM1.什么是ORMORM,即Object-RelationlMapping,它的作用是在关系型数据库和对象之间作一个映射。这样,我们在具体的操作数据库的时候,由ORMapping负责生成SQL,我们需要关心对象就行。一、ORM2.使用ORM的优点提高学习开发效率,降低开发成本。我们将不需要再浪费太多的时间在ADO.NET和Sql语句上。ORM框架已经把数据库转变成了我们熟悉的对象。简化代码,减少BUG数量。大量减少程序开发代码,实现ORM后,开发数据层就比较简单,大大减少了出错机会。提高性能。通过Cache的实现,能够对性能进行调优,实现了ORM区隔了实际数据存储和业务层之间的关系,能够对每一层进行单独跟踪,增加了性能优化的可能。隔离数据源,可以很方便的转换数据库。利用ORM可以将业务层与数据存储隔开,开发人员不需要关系实际存储的方式,如果我们需要把SQLServer数据库换成ORACLE数据库,只需要修改配置文件就可,不需要修改程序。二、iBATIS介绍1.ibatis是ORM工具之一ibatis是一种“半自动化”的ORM实现。是轻量级的ORM框架。目前主流的ORM,无论Hibernate还是ApacheOJB,都对数据库结构提供了较为完整的封装,提供了从POJO(简单的Java对象PlainOldJavaObjects)到数据库表的全套映射机制。程序员甚至不需要对SQL的熟练掌握,Hibernate/OJB会根据制定的存储逻辑,自动生成对应的SQL。但ibatis的着力点,则在于POJO与SQL之间的映射关系。它并不会为程序员在运行期自动生成SQL执行。具体的SQL需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。二、iBATIS介绍2、iBATIS的优缺点优点:简单:易于学习,易于使用实用:提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net)。灵活:因为它是一种“半自动化”的ORM实现,所以有更好的自由度和扩展性。功能完整:提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。增强系统的可维护性:通过业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护。缺点:没有明确对.NET2.0的支持。IbatisNet在实际项目中的使用较少。Ibatis不能从本质上提升开发效率,我们需要自己写sql,写实体类,写配置文件。三、iBATIS的简单使用1、建立数据库略。2、添加引用把IBATISNet.Common.dll,IBATISNet.DataMapper.dll,Castle.DynamicProxy.dll放到bin里;引用IBATISNet.DataMapper.dll。三、iBATIS的简单使用3.实体类Model.csa)C#是OO面向对象的开发语言,所有的代码都必须放在类里面。程序不应直接与数据库打交道,要把数据封装为entity实体类,程序中操作的应是业务对象。b)entity实体类是只包含数据的类,一般只有字段和属性,没有方法;字段private,用来存储数据,属性public,提供外部访问方法程序中只有实体类对象和对象的集合实体类。namespaceTest{publicclassmodel{publicmodel(){}privatestring_LogonID;publicstringLogonID{get{return_LogonID;}set{_LogonID=value;}}……三、iBATIS的简单使用4.配置文件1).providers.configiBATIS提供了多个数据库的连接。我们用什么数据库,就把哪个的“provider”的“enable”设成“true”。?xmlversion=1.0encoding=utf-8?providersxmlns=:xsi= providername=sqlServer1.1enabled=true……//providers三、iBATIS的简单使用4.配置文件2).properties.configprovider指定是.netframework1.1环境下sqlserver2000;connectionString是数据库连接串。?xmlversion=1.0encoding=utf-8?settingsaddkey=providervalue=sqlServer1.1/addkey=connectionStringvalue=server=.;database=llcode;uid=sa;pwd=123//settings三、iBATIS的简单使用4.配置文件3).sqlmap.configa)“propertiesresource=properties.config/”就是把properties.config拿过来。b)“${................}”就是取key的valuec)“sqlMapresource=test.xml/”后面会写这个xml。?xmlversion=1.0encoding=UTF-8?sqlMapConfigxmlns=:xsi==properties.config/settingssettinguseStatementNamespaces=false/settingcacheModelsEnabled=true//settingsdatabaseprovidername=${provider}/dataSourcename=IBATISNetTextDataSource connectionString=${connectionString}//database三、iBATIS的简单使用4.配置文件4).test.xml(映射文件)a)“typeAliasalias=”model“type=”Test.model“/”给实体类一个别名。b)“resultMaps/”数据库映射过来的,property实体类属性,column数据库例名。c)“statements/”具体的sql语句,“#.........#”夹着的是参数。?xmlversion=1.0encoding=utf-8?sqlMapnamespace=modelxmlns=:xsi==modeltype=Test.model//aliasresultMaps/resultMapsstatementsselectid=SelectparameterClass=stringresultMap=SelectResultselect*fromusersdynamicprepend=WHEREisParameterPresent三、iBATIS的简单使用5.用一个类封装调用xml映射文件的方法helper.csQueryForList方法:第一个参数对应test.xml里的statements里的那些节点;第二个参数就是sql语言的参数,参数多的话就用实体类传递。usingIBATISNet.DataMapper;namespaceTest{publicclasshelper{publichelper(){}publicIListSelectAll(){returnMapper.Instance().QueryForList(Select,null);}}}三、iBATIS的简单使用6.WebUI层1)Default.aspx放个GridGride显示数据。asp:DataGridid=DataGrid1……runat=serverColumnsasp:BoundColumnDataField=LogonIDHeaderText=LogonID/asp:BoundColumnasp:BoundColumnDataField=NameHeaderText=Name/asp:BoundColumnasp:BoundColumnDataField=PsdHeaderText=Password/asp:BoundColumn/Columns/asp:DataGrid三、iBATIS的简单使用6.WebUI层2)Default.aspx.csQueryForList方法:第一个参数对应test.xml里的statements里的那些节点;第二个参数就是sql语言的参数,参数多的话就用实体类传递。privatevoidPage_Load(objectsender,System.EventArgse){helperc=newhelper();if(!this.IsPostBack){stringstrId=Request.QueryString[logonid];DataGrid1.DataSource=c.SelectOne(strId);DataGrid1.DataBind();}}四、DataMaps1.DateMaps包含内容一个实例:?xmlversion=1.0encoding=UTF-8?sqlMapnamespace=Product……aliastypeAliasalias=Producttype=Example.Domain.Product,Example.Domain//aliascacheModelscacheModelid=productCachetype=LRUflushIntervalhours=24/propertyname=CacheSizevalue=1000//cacheModel/cacheModelsresultMapsresultMapid=productResultclass=Productresultproperty=Idcolumn=Product_Id/四、DataMaps1.DateMaps包含内容分析:parameterMap把SQL中的“?”映射为Product类的Id属性。resultMap把结果基的列映射为对象的属性。cacheModel定义了缓存,在内存中保存这些查询结果集的最后一千条记录,有效时间为24小时。最初的时候,我们可以只写最简单的只要完成所需功能的语句,在此基础上,以后可以逐渐地添加比如cacheModel等更完善的功能,以改善性能,此时只要修改XML映射文件,程序源码不用作任何改动。一个SQLMapXML映射文件可以包含任意多个statement,paramter和result。四、DataMaps2.MappedStatements1).存储过程procedureid=SwapEmailAddressesparameterMap=swap-paramsps_swap
本文标题:iBATIS架构开发
链接地址:https://www.777doc.com/doc-3555595 .html