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: