2022年iBATIS-SqlMaps入门教程中文版.pdf .pdf

上传人:Che****ry 文档编号:34265924 上传时间:2022-08-15 格式:PDF 页数:10 大小:105.92KB
返回 下载 相关 举报
2022年iBATIS-SqlMaps入门教程中文版.pdf .pdf_第1页
第1页 / 共10页
2022年iBATIS-SqlMaps入门教程中文版.pdf .pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《2022年iBATIS-SqlMaps入门教程中文版.pdf .pdf》由会员分享,可在线阅读,更多相关《2022年iBATIS-SqlMaps入门教程中文版.pdf .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、iBATIS SQL Maps入门教程Page 1 of 10 iBATIS SQL Maps 入门教程Version 2.0 2004 年 6 月 17 日Clinton Begin 著刘 涛 译http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 2 of 10 简介本文是初学者的快速入门教程,涵盖了SQL Map 的一个

2、简单而典型的应用。每个主题更详细的信息可以参考iBatis SQL Maps 2.0 开发指南。本文是 iBatis SQL Maps Tutorial 的中文版, 仅供读者参考。 最权威的以Clinton Begin的官方文档为准,它可以从http:/网站下载。如果中文翻译有错误,请通知译者( email:,Blog :http:/ ) 。准备使用 SQL Map SQL Map 架构能应用于设计不好的数据库模型甚至是设计不好的对象模型。尽管如此,您在设计数据库模型和对象模型时,还是应该遵循最佳的设计原则。这样, 您会获得更好的性能和更简洁清晰的设计方案。设计最容易开始的地方是分析应用的业务

3、逻辑。分析什么是应用的业务对象,什么是数据模型以及两者之间的关系。作为快速入门第一个例子,我们使用一个简单的Java Bean Person类。Person.java package examples.domain; /imports implied. public class Person private int id; private String firstName; private String lastName; private Date birthDate; private double weightInKilograms; private double heightInMeter

4、s; public int getId () return id; public void setId (int id) http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 3 of 10 this.id = id; / let s assume we have the other getters and setters t

5、o save space Person类有了,如何将 Person类映射成数据表呢?SQL Map 对 Java Bean和数据表之间的关系没有限制,如一个数据表映射成一个Java Bean,或多个表映射成一个Java Bean,或多个 Java Bean 映射成一个数据表等。因为使用SQL Map 您可以充分发挥SQL 语句的全部潜力而很少限制。下面这个例子,我们使用一个简单的表,将一个表映射成一个Java Bean,Java Bean 和表是一对一的关系。Person.sql CREATE TABLE PERSON( PER_ID NUMBER (5, 0) NOT NULL, PER_F

6、IRST_NAME VARCHAR (40) NOT NULL, PER_LAST_NAME VARCHAR (40) NOT NULL, PER_BIRTH_DATE DATETIME , PER_WEIGHT_KG NUMBER (4, 2) NOT NULL, PER_HEIGHT_M NUMBER (4, 2) NOT NULL, PRIMARY KEY (PER_ID) )SQL Map 的配置文件现在准备好了学习环境,让我们从学习SQL Map的配置文件开始,配置文件是SQL MAP 的配置信息统一设置的地方。SQL Map 配置文件是XML 文件,我们可以它设置各种属性,JDBC

7、 DataSource 和 SQL Map。在配置文件中,可以方便地统一配置DataSource 不同的实现。SQL Map框架包括DataSource 的 iBATIS 实现:SimpleDataSource 类,Jakarta DBCP (Commons) , 和可通过 JNDI上下文查找的DataSource(即应用服务器中的DataSource) 。详细的使用方法在以后的章节讨论。在本例中,我们使用Jakarta DBCP。对于上面的例子,配置非常简单,如下所示:SqlMapConfigExample.xml http:/ Clinton Begin 著 刘涛 () 译名师资料总结 -

8、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 4 of 10 SqlMapConfigExample.properties# This is just a simple properties file that simplifies automated configuration http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - -

9、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 5 of 10 # of the SQL Maps configuration file (e.g. by Ant builds or continuous # integration tools for different environments etc.) # These values can be used in any property value in the file a

10、bove (e.g. “$driver”) # Using a properties file such as this is completely optional. driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:localhost:1521:oracle1 username=jsmith password=testSQL Map 的映射文件现在 DataSource 已经配置好了,并且有了统一的SQL Map 配置文件,我们还需要SQL Map 的映射文件。映射文件包括SQL 语句和参数对象和结果对象的映射。继续上面

11、的例子,我们从一个简单的查询语句开始,为Person 类和 PERSON 表之间创建一个 SQL Map 映射文件。Person.xml SELECT PER_ID as id, PER_FIRST_NAME as firstName, PER_LAST_NAME as lastName, PER_BIRTH_DATE as birthDate, PER_WEIGHT_KG as weightInKilograms, PER_HEIGHT_M as heightInMeters FROM PERSON WHERE PER_ID = #value# 上面的例子是SQL Map 最简单的形式。 它

12、使用了 SQL Map 框架中一个特性,根据匹配的名字将 ResultSet 的列映射成Java Bean 的属性(或 Map 的 key 值) 。#value#符号是输入参数,该符号表示使用了基本类型的包装类作为输入参数(即Integer,但不仅限于此类型) 。http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 6 of

13、10 以上的方法虽然很简单,但有一些限制, 无法指定输出字段的数据类型,无法自动地在结果对象中载入相关的信息(即Java Bean 无法使用复杂的属性) ;以上的方法对性能还有轻微的不利影响,因为需要读取ResultSetMetaData 的信息。使用resultMap,可以克服以上的不足,但现在只需要一个简单的例子,以后我们再转向其他不同的方法(无须修改Java代码)。大多数的应用不仅需要从数据库中读取数据,还需要修改数据。我们已有了一个SELECT 查询语句的mapped statement简单例子,下面看看INSERT,UPDATE 和 DELETE的 mapped statement什

14、么样子。幸运的是,它们其实没什么区别。接下来,我们完成Person SQL Map 其他部分,以实现修改数据的功能。Person.xml SELECT PER_ID as id, PER_FIRST_NAME as firstName, PER_LAST_NAME as lastName, PER_BIRTH_DATE as birthDate, PER_WEIGHT_KG as weightInKilograms, PER_HEIGHT_M as heightInMeters FROM PERSON WHERE PER_ID = #value# INSERT INTO PERSON (PER

15、_ID, PER_FIRST_NAME, PER_LAST_NAME, PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M) VALUES (#id#, #firstName#, #lastName#, #birthDate#, #weightInKilograms#, #heightInMeters#) http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - -

16、 - - - - - iBATIS SQL Maps入门教程Page 7 of 10 UPDATE PERSON SET PER_FIRST_NAME = #firstName#, PER_LAST_NAME = #lastName#, PER_BIRTH_DATE = #birthDate#, PER_WEIGHT_KG = #weightInKilograms#, PER_HEIGHT_M = #heightInMeters# WHERE PER_ID = #id# DELETE PERSON WHERE PER_ID = #id# 使用 SQL Map 框架编程好了, 我们完成了所有的配

17、置文件和映射文件,就剩下的应用的编码工作了。首先要设置 SQL Map, 读入刚创建好的SQL Map XML配置文件。为简化这个工作, 可以使用 SQL Map架构中提供的Resources类。String resource = “com/ibatis/example/sql-map-config.xml”; Reader reader = Resources.getResourceAsReader (resource); SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);以上的SqlMapClient对象

18、是线程安全,并且应持久生存。对于一个特定的应用,只需进行一次SqlMap 配置。因此,它可以作为基类的一个静态对象(即DAO 对象的基类),或者,如果您想让它有更大的作用范围,可以把它封装在方便使用的类中。例如:public class MyAppSqlConfig private static final SqlMapClient sqlMap; static try String resource = “com/ibatis/example/sql-map-config.xml”; Reader reader = Resources.getResourceAsReader (resourc

19、e); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 8 of 10 catch (Exception e) / If you get an error at this point, it matters l

20、ittle what it was. It is going to be / unrecoverable and we will want the app to blow up good so we are aware of the / problem. You should always log such errors and re-throw them in such a way that / you can be made immediately aware of the problem. e.printStackTrace(); throw new RuntimeException (

21、“Error initializing MyAppSqlConfig class. Cause: ”+e); public static getSqlMapInstance () return sqlMap; 从数据库读取对象既然 SqlMap 对象已完成初始化,就可以方便地使用它了。首先,我们用它从数据库中读取一个Person 对象。 (在本例中,假设PERSON 表中已存在10 条记录, PER_ID 从 1 到10) 。要从数据库中得到一个Person 对象,只需要SqlMap 实例, mapped statement 的名字和一个 Person ID 号。让我们读入PER_ID 是 5

22、 的 Person对象。 SqlMapClient sqlMap = MyAppSqlMapConfig.getSqlMapInstance(); / as coded above Integer personPk = new Integer(5); Person person = (Person) sqlMap.queryForObject (“getPerson ”, personPk); 把对象写入数据库现在已有了一个从数据库中读出的Person对象,接着修改 Person对象的 height 和 weight属性,并将它写入数据库。 person.setHeightInMeters(1

23、.83); / person as read from the database above person.setWeightInKilograms(86.36); sqlMap.update(“updatePerson ”, person); http:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 9 of 10 要删除这个P

24、erson对象,也很容易。 sqlMap.delete(“deletePerson”, person); 类似地,也可以创建一个新的Person对象。Person newPerson = new Person(); newPerson.setId(11); / you would normally get the ID from a sequence or custom table newPerson.setFirstName(“Clinton”); newPerson.setLastName(“Begin ”); newPerson.setBirthDate (null); newPerso

25、n.setHeightInMeters(1.83); newPerson.setWeightInKilograms(86.36); sqlMap.insert (“insertPerson”, newPerson); 好了,快速入门课程终于学完了。下一步 至此本教程结束了。请访问http:/网站下载完整的iBatis SQL Maps 开发指南,还有 JPetStore 4,它是一个完整的Web 应用例子,基于Jakarta Struts,iBatis DAO 2.0 和 SQL Maps 2.0 。附录:容易出错的地方本附录是译者添加的,列出了初学者容易出错的地方,作为完成快速入门课程后的学

26、习笔记,可以让初学者少走些弯路。仅供参考。1) 在 parameterMap 和 resultMap 中,字段数据类型是java.sql.Types 类定义的常量名称。常用的数据类型包括BLOB ,CHAR ,CLOB ,DATE,LONGV ARBINARY ,INTEGER ,NULL ,NUMERIC , TIME ,TIMESTAMP和 VARCHAR 等。2) 对于数据表中NULLBALE的字段,必须在parameterMap 和 resultMap 中指定字段的数据类型。3) 对于数据类型是DATE, CLOB 或 BLOB 的字段,最好在 parameterMap 和 resul

27、tMaphttp:/ Clinton Begin 著 刘涛 () 译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - iBATIS SQL Maps入门教程Page 10 of 10 http:/ Clinton Begin 著 刘涛 () 译中指定数据类型。4) 对于二进制类型的数据,可以将LONGV ARBINARY映射成 byte 。5) 对于文本类型较大的数据,可以将CLOB 映射成 String。6) Java Bean 必须拥有缺省的构造器(即无参数的构造器)。7) Java Bean 最好实现Serializable 接口,以备应用的进一步扩展。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁