torquetutorial经典.docx

上传人:b****6 文档编号:13118456 上传时间:2023-06-11 格式:DOCX 页数:30 大小:23.79KB
下载 相关 举报
torquetutorial经典.docx_第1页
第1页 / 共30页
torquetutorial经典.docx_第2页
第2页 / 共30页
torquetutorial经典.docx_第3页
第3页 / 共30页
torquetutorial经典.docx_第4页
第4页 / 共30页
torquetutorial经典.docx_第5页
第5页 / 共30页
torquetutorial经典.docx_第6页
第6页 / 共30页
torquetutorial经典.docx_第7页
第7页 / 共30页
torquetutorial经典.docx_第8页
第8页 / 共30页
torquetutorial经典.docx_第9页
第9页 / 共30页
torquetutorial经典.docx_第10页
第10页 / 共30页
torquetutorial经典.docx_第11页
第11页 / 共30页
torquetutorial经典.docx_第12页
第12页 / 共30页
torquetutorial经典.docx_第13页
第13页 / 共30页
torquetutorial经典.docx_第14页
第14页 / 共30页
torquetutorial经典.docx_第15页
第15页 / 共30页
torquetutorial经典.docx_第16页
第16页 / 共30页
torquetutorial经典.docx_第17页
第17页 / 共30页
torquetutorial经典.docx_第18页
第18页 / 共30页
torquetutorial经典.docx_第19页
第19页 / 共30页
torquetutorial经典.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

torquetutorial经典.docx

《torquetutorial经典.docx》由会员分享,可在线阅读,更多相关《torquetutorial经典.docx(30页珍藏版)》请在冰点文库上搜索。

torquetutorial经典.docx

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:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2