torquetutorial经典.docx
- 文档编号:25675465
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:30
- 大小:23.79KB
torquetutorial经典.docx
《torquetutorial经典.docx》由会员分享,可在线阅读,更多相关《torquetutorial经典.docx(30页珍藏版)》请在冰豆网上搜索。
torquetutorial经典
朗川软件有限公司
Torque3.0
使用指南
修订历史记录
日期
版本
说明
作者
2003-3-10
1.0
陈超仁
1
使用简明流程
1.1从已经存在的数据库生成schemaXML文件
1.1.1编辑build.properties
torque.project=shx3
torque.database=oracle
torque.targetPackage=net.emedchina.om
torque.database.createUrl=jdbc:
oracle:
thin:
@172.25.3.201:
1521:
devgbk
torque.database.buildUrl=jdbc:
oracle:
thin:
@172.25.3.201:
1521:
devgbk
torque.database.url=jdbc:
oracle:
thin:
@172.25.3.201:
1521:
devgbk
torque.database.driver=oracle.jdbc.OracleDriver
torque.database.user=shx3
torque.database.password=shx3
torque.database.host=172.25.3.201
#下面一行至关重要
torque.database.schema=SHX3
1.1.2ant-fbuild-torque.xmljdbc
1.1.3生成:
schema/shx3-schema.xml,该文件用于生成模型源代码。
可进行调整,以符合项目需要。
1.1.4ant–fbuild-torque.xmlsql
1.1.5生成:
src/sql/*,这些文件用于创建数据库及ID_TABLE
1.2根据schemaXML文件生成javaobjectmodel模型源代码
1.2.1调整shx3-schema.xml,一般情况下不需要调整。
1.2.2ant–fbuild-torque.xmlom
1.2.3生成:
src/java/*,这些文件用于项目的所有数据库访问
1.3在项目中整合torque
1.3.1编辑Torque.properties
torque.applicationRoot=.
torque.database.default=shx3
torque.database.shx3.adapter=oracle
##Usingtorque'soldpool
torque.dsfactory.shx3.factory=org.apache.torque.dsfactory.
TorqueDataSourceFactory
torque.dsfactory.shx3.pool.defaultMaxConnections=10
torque.dsfactory.shx3.pool.maxExpiryTime=3600
torque.dsfactory.shx3.pool.connectionWaitTimeout=10
torque.dsfactory.shx3.connection.driver=
oracle.jdbc.OracleDriver
torque.dsfactory.shx3.connection.url=
jdbc:
oracle:
thin:
@172.25.3.201:
1521:
devgbk
torque.dsfactory.shx3.connection.user=shx3
torque.dsfactory.shx3.connection.password=shx3
1.3.2在项目的初始化代码中添加一下代码:
try{
InputStreamin=
getClass().getResourceAsStream("/Torque.properties");
PropertiesConfigurationc=newPropertiesConfiguration();
c.load(in);
in.close();
Torque.init(c);
}
catch(Exceptione){
e.printStackTrace();
}
1.4增加新表
1.4.1备份shx3-schema.xml
1.4.2ant–fbuild-torque.xmljdbc
1.4.3将新的表的XML文本块粘贴到备份的shx3-schema.xml
1.4.4备份src/java/*
1.4.5ant–fbuild-torque.xmlom
1.4.6将新的表对应的java文件添加到项目中。
1.5删除旧表
1.5.1删除表
1.5.2删除项目中该表相关联的java源代码
1.6修改数据库表结构
1.6.1注意如果修改的表对应的java文件有添加了自定义的方法,含有该方法的java文件需要事先备份。
待增加新表操作完成后,再将这些java文件复制过来,覆盖生成的文件。
其实,torque在生成java文件时,不会覆盖从base基类继承来的类。
所以,在保证安全的情况下,可以直接在修改的package上直接生成java代码。
1.6.2先执行删除旧表,然后执行增加新表。
1.7包管理及缺省基类
根据系统的各个子系统,定义的表也分为多个子包。
范例:
xmlversion="1.0"?
>
DOCTYPEdatabaseSYSTEM"http:
//jakarta.apache.org/turbine/dtd/database.dtd">
--AutogeneratedbyJDBCToXMLSchema!
-->
name="shx3" defaultIdMethod="none" package="net.emedchina.om.plt" baseClass="net.emedchina.base.DataObject" basePeer="net.emedchina.base.Peer"> .. 2torque结构说明 2.1DatabaseMaps: 存储数据库结构的内部对象。 2.2PeerClasses: 进行1-1表操作的对象。 2.3DataObjects: 映射为1张表的对象。 2.4CriteriaObjects: 条件对象。 定义查询条件。 2.5IDBroker: 产生表级唯一ID的对象。 2.6SchemaDefinition: 定义数据库逻辑结构的文件。 2.7Selects: 通过Peers进行操作。 2.8Inserts: 可以通过Peers和DataObject进行操作。 2.9Deletes: 通过Peers进行操作。 2.10Joinsandlinkingobjects: 通过Criteria和Criteria.Criterion进行操作。 3编码 3.1在生成的java源码中添加自定义方法 自定义的方法可以添加到tableName.java和tableNamePeer.java中,不要修改任何baseTableName.java和baseTableNamePeer.java。 3.2初始化 InputStreamin= getClass().getResourceAsStream("/Torque.properties"); PropertiesConfigurationc=newPropertiesConfiguration(); c.load(in); in.close(); Torque.init(c); 3.3ID生成器的使用 3.3.1确认表的ID有primarykey属性 3.3.2ant–fbuild-torque.xmljdbc 3.3.3生成: 从已经存在的数据库生成schemaXML文件 3.3.4ant–fbuild-torque.xml 3.3.5生成: 从schemaXML文件生成SQL和Java代码 3.3.6ant–fbuild-torque.xmlid-table-init-sql 3.3.7生成: src/sql/shx3-schema-idtable-init.sql 3.3.8执行生成的SQL语句,整合java源代码到项目中 3.3.9编码1: 使用tableName.save()时,新的ID自动获得,并插入到新增的记录中。 3.3.10编码2: 手工得到下一个ID,得到ID后,ID自动增加 //通过ConnectionManager得到一个Connectioncon longid=Torque.getDatabaseMap().getIDBroker().getIdAsLong(con,"表名"); 3.4INSERT Publisheraddison=newPublisher(); addison.setName("AddisonWesleyProfessional"); addison.save(); Authorbloch=newAuthor(); bloch.setFirstName("Joshua"); bloch.setLastName("Bloch"); bloch.save(); Bookeffective=newBook(); effective.setTitle("EffectiveJava"); effective.setISBN("0-618-12902-2"); effective.setPublisher(addison); effective.setAuthor(bloch); effective.save(); 3.5SELECT Criteriacrit=newCriteria(); Listv=BookPeer.doSelect(crit); Criteriacrit=newCriteria(); crit.add(BookPeer.ISBN,"0-618-12902-2"); Listv=BookPeer.doSelect(crit); 3.6UPDATE Criteriacrit=newCriteria(); crit.add(TmpTestPeer.ID,"1010"); Listv=TmpTestPeer.doSelect(crit); if(v.size()==1) { TmpTesttt=(TmpTest)v.get(0); System.out.println(tt.getName()); tt.setName("Valuefromupdate"); tt.save(); } 3.7DELETE Criteriacrit=newCriteria(); crit.add(TmpTestPeer.ID,"1010"); TmpTestPeer.doDelete(crit); crit=newCriteria(); crit.add(TmpTestPeer.ID,"1020"); Listv=TmpTestPeer.doSelect(crit); if(v.size()==1) { TmpTesttt=(TmpTest)v.get(0); TmpTestPeer.doDelete(tt); } 3.8简单查询 Peers.doSelect(); 3.9复杂查询 //select*fromabcwhere(a<1andb>2)or(a>5andb<3) Criteriacrit=newCriteria(); Criteria.Criteriona1=crit.getNewCriterion(ABC.A,1,Criteria.LESS_THAN); Criteria.Criterionb2=crit.getNewCriterion(ABC.B,2,Criteria.GREATER_THAN); Criteria.Criteriona5=crit.getNewCriterion(ABC.A,5,Criteria.GREATER_THAN); Criteria.Criterionb3=crit.getNewCriterion(ABC.B,3,Criteria.LESS_THAN); crit.add(a1.and(b2).or(a5.and(b3))); 3.10关联查询 //selecttt.*fromtmp_testtt,plt_platformpp //wherepp.id=tt.id Criteriacrit=newCriteria(); crit.addJoin(TmpTestPeer.ID,PltPlatformPeer.ID); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.11DISTINCT Criteriacrit=newCriteria(); crit.addJoin(TmpTestPeer.NAME,PltPlatformPeer.NAME); crit.setDistinct(); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.12排序 Criteriacrit=newCriteria(); crit.addDescendingOrderByColumn(TmpTestPeer.LASTUPDATE); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.13GROUPBYANDDISTINCT Criteriacrit=newCriteria(); crit.addSelectColumn(TmpTestPeer.NAME); crit.addGroupByColumn(TmpTestPeer.NAME); crit.setDistinct(); Listv=TmpTestPeer.doPSSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { Objecttt=i.next(); System.out.println(tt.toString()); } 3.14条件查询 Criteriacrit=newCriteria(); crit.add(TmpTestPeer.NAME,(Object)"1000",Criteria.LIKE); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.15自定义查询条件 Criteriacrit=newCriteria(); crit.add(TmpTestPeer.NAME, (Object)("UPPER("+TmpTestPeer.NAME+")='1000'"),Criteria.CUSTOM); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.16在查询中使用两次同一字段 Criteriacriteria=newCriteria(); criteria.add(InvoicePeer.COST,1000,Criteria.GREATER_EQUAL); Criteria.Criterioncriterion= criteria.getCriterion(InvoicePeer.COST); criterion.and( criteria.getNewCriterion( criterion.getTable(), criterion.getColumn(), newInteger(5000), Criteria.LESS_EQUAL) ); 3.17翻页(torque3.0对于Oracle翻页有BUG! 所以,不能在项目中使用torque的反页机制。 如果需要翻页,使用DAO。 ) Criteriacrit=newCriteria(); crit.add(TmpTestPeer.NAME,"Testname"); crit.setLimit(6); crit.setOffset(3); System.out.println(crit); Listv=TmpTestPeer.doSelect(crit); Iteratori=v.iterator(); while(i.hasNext()) { TmpTesttt=(TmpTest)i.next(); System.out.println(tt.getId()+": "+tt.getName()); } 3.18事务处理 Connectioncon=Transaction.begin("shx3"); Criteriacrit=newCriteria(); crit.add(TmpTestPeer.NAME,(Object)"%",Criteria.LIKE); crit.setUseTransaction(true); Listlist=TmpTestPeer.doSelect(crit); Tmit(con); 4 模版文件 4.1build.properties #------------------------------------------------------------------- # #TORQUECONFIGURATIONFILE # #------------------------------------------------------------------- #Thisfilecontainsthemostcommonlyusedproperties.Fora #acompletelistofbuildproperties,pleasereferto: #http: //jakarta.apache.org/turbine/torque/properties-reference.xml #------------------------------------------------------------------- #------------------------------------------------------------------- # #PROJECT # #------------------------------------------------------------------- #ThisisthenameofyourTorqueproject.Yournon-Javagenerated #fileswillbenamedusingtheprojectnameselectedbelow.Ifyour #project=killerappthenyouwillhaveagenerated:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- torquetutorial 经典