锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 瀵瑰簲SQL “field=value”琛ㄨ揪寮?/p>
濡傦細Expression.eq("name","Erica") 瀵瑰簲SQL“between”琛ㄨ揪寮?/p>
濡傦細Expression.between("age",new Integer(13),new Integer(50)); and鍏崇郴緇勫悎錛屽錛?/p>
Expression.add(Expression.eq("name","Erica"),Expression.add("sex",new Integer(1))) or鍏崇郴緇勫悎錛屽錛?/p>
Expression.or(Expression.eq("name","Erica"),Expression.add("sex",new Integer(1))) 浣滀負琛ュ厖錛屾湰鏂規(guī)硶鎻愪緵浜嗗師鐢烻QL璇硶鐨勬敮鎸侊紝鎴戜滑鍙互閫氳繃榪欎釜鏂規(guī)硶鐩存帴閫氳繃SQL璇彞闄愬畾鏌ヨ鏉′歡 涓嬮潰鐨勪唬鐮佽繑鍥炴墍鏈夊悕縐頒互"Erica"鍏跺疄鐨勮褰曪細 涓婁緥瀵瑰綋鍓嶇殑TUser璁板綍鎸夌収騫撮緞榪涜鍒嗙粍銆傞氳繃Projections.groupProperty鏂規(guī)硶錛屾垜浠寚瀹氫簡鐢ㄤ簬鍒嗙粍鐨勭洰鏍囧睘鎬?#8220;age”銆傜敓鎴愮殑SQL璇彞錛歴elect this.age as y0_ from T_User this_group by this_.age銆?br />
鍙﹀錛屽浜庡鏉′歡緇勫悎鐨勭粺璁°佸垎緇勫姛鑳斤紝鎴戜滑鍙互鍊熷姪ProjectionList瀹屾垚錛屼笅闈㈢殑渚嬪瓙涓紝鎴戜滑緇熻浜嗗悇涓勾榫勫眰嬈′腑鐨勭敤鎴鋒暟閲忥細
]]>Criteria criteria=session.createCriteria(TUser.class);
criteria.add(Expression.eq("name","Erica"));
criteria.add(Expression.eq("sex",new Integer(1));
Criteria鏌ヨ琛ㄨ揪寮?br />
Criteria鏈韓鍙槸涓涓鍣紝鍏蜂綋鐨勬煡璇㈡潯浠惰閫氳繃Criteria.add鏂規(guī)硶娣誨姞鍒癈riteria瀹炰緥涓?br />
鏂規(guī)硶
鎻忚堪
Expression.eq
Expression.allEq
鍙傛暟涓轟竴涓狹ap瀵硅薄錛屽叾涓寘鍚簡澶氫釜灞炴?鍊煎搴斿叧緋匯傜浉褰撲簬澶氫釜Expression.eq鍏崇郴鐨勫彔鍔?/td>
Expression.gt
瀵瑰簲SQL“field>value”琛ㄨ揪寮?/td>
Expression.ge
瀵瑰簲SQL“field>=value”琛ㄨ揪寮?/td>
Expression.lt
瀵瑰簲SQL“field<value”琛ㄨ揪寮?/td>
Expression.le
瀵瑰簲SQL“field<=value”琛ㄨ揪寮?/td>
Expression.between
Expression.like
瀵瑰簲SQL"field like valule"琛ㄨ揪寮?/td>
Expression.in
瀵瑰簲SQL“field in...”琛ㄨ揪寮?/td>
Expression.eqproperty
鐢ㄤ簬姣旇緝涓や釜灞炴т箣闂寸殑鍊鹼紝瀵瑰簲SQL“field>field”
Expression.gtProperty
鐢ㄤ簬姣旇緝涓や釜灞炴т箣闂寸殑鍊鹼紝瀵瑰簲SQL“field>=field”
Expression.ltProperty
鐢ㄤ簬姣旇緝涓や釜灞炴т箣闂寸殑鍊鹼紝瀵瑰簲SQL"field<field"
Expression.leProperty
鐢ㄤ簬姣旇緝涓や釜灞炴т箣闂寸殑鍊鹼紝瀵瑰簲SQL"field<=field"
Expression.and
Expression.or
Expression.sql
Expression.sql("lower({alias}.name) like lower(?)","Erica%",Hibernate.STRING);
鍏朵腑鐨?{alias}"灝咹ibernate鍦ㄨ繍琛屾湡浣跨敤褰撳墠鍏寵仈鐨凱OJO鍒悕鏇挎崲
鍦℉ibernate3涓紝寮曞叆浜哛estrictions綾諱綔涓篍xpression鐨勬浛浠c?br />
紺轟緥鏌ヨ
Example綾誨疄鐜頒簡Criteria鎺ュ彛錛屽悓鏍鳳紝瀹冧篃鍙互鐢ㄤ綔Criteria鐨勬煡璇㈡潯浠躲侲xample鐨勪綔鐢ㄦ槸錛氭牴鎹凡鏈夊璞★紝鏌ユ壘灞炴т笌涔嬬浉絎︾殑鍏朵粬瀵硅薄銆?br />
Criteria criteria=session.CreateCriteria(TUser.class);
TUser exampleUser=new TUser();
exapleUser.getName("Erica");
criteria.add(Example.create(exampleUser));
List<TUser> list=criteria.list();
for(TUser user:list){
System.out.println(user.getName());
}
澶嶅悎鏌ヨ
Criteria criteria=session.createCriteria(TUser.class);
Criteria addrCriteria=criteria.createCriteria("addresses");
addrCriteria.add(Expression.like("addresses","%shanghai%"));
List<TUser> list = criteria.list();
for(TUser user:list){
System.out.println(user.getName());
Set<TAddress> addrSet=user.getAddresses();
for(TAddress addr:addrSet){
System.out.println(addr.getAddress());
}
}
DetachedCriteria
Hibernate2涓紝Criteria鐢熷懡鍛ㄦ湡浣嶄簬鍏跺涓籗ession鐢熷懡鍛ㄦ湡涓紝涔熷氨鏄錛岀敱鏌愪釜session鍒涘緩鐨凜riteria瀹炰緥錛屼竴鏃ession閿姣侊紝閭d箞姝riteria瀹炰緥涔熼殢涔嬪け鏁堛?br />
Hibernate3涓紩鍏ヤ簡DetachedCriteria錛孌etachedCriteria鍙互鑴辯session瀹炰緥鐙珛瀛樺湪錛岃繖鏍鳳紝鎴戜滑灝卞彲浠ュ皢鏌愪簺閫氱敤鐨凜riteria鏌ヨ鏉′歡榪涜鎶界錛屾瘡嬈′嬌鐢ㄦ椂鍐嶄笌褰撳墠session瀹炰緥緇戝畾浠ヨ幏寰楁洿濂界殑浠g爜閲嶇敤鏁堟灉銆?br />
DetachedCriteria deCriteria=DetachedCriteria.forClass(TUser.class);
deCriteria.add(Expression.eq("name","Erica"));
deCriteria.add(Expression.eq("sex",new Integer(1)));
Criteria criteria=deCriteria.getExecutableCriteria(session);
List<TUser> list=criteria.list();
for(TUser user:list){
System.out.println(user.getName());
}
DetachedCriteria aveAge=DetachedCriteria.forClass(TUser.class);
avgAge.setProjection(Projections.avg("age"));
Criteria criteria=session.createCriteria(TUser.class);
criteria.add(Subqueries.propertyGT("age",avgAge));
Criteria楂樼駭鐗規(guī)?br />
闄愬畾榪斿洖鐨勮褰曡寖鍥?/strong>
閫氳繃criteria.setFirstResult/setMaxResults鏂規(guī)硶鍙互闄愬埗涓嬈℃煡璇㈣繑鍥炵殑璁板綍鑼冨洿錛?br />
Criteria criteria=session.createCriteria(TUser.class);
//闄愬畾鏌ヨ榪斿洖媯绱㈢粨鏋滀腑錛屼粠100鏉$粨鏋滃紑濮嬬殑20鏉¤褰?/span>
criteria.setFirstResult(100);
criteria.setMaxResults(20);
//
//
Criteria criteria=session.createCriteria(TUser.class);
criteria.add(Expression.eq("groupId",new Integer(2)));
criteria.addOrder(Order.asc("name"));
criteria.addOrder(Order.desc("groupId"));
鍒嗙粍涓庣粺璁?br />
鍦℉ibernate3涓紝鎴戜滑榪樺彲浠ラ氳繃Criteria瀹屾垚鍒嗙粍鍜岀粺璁°傚垎緇勩佺粺璁¤〃杈懼紡鐢盚ibernate3鏂板紩鍏ョ殑Projections Class榪涜灝佽銆?br />
Criteria criteria=session.createCriteria(TUser.class);
criteria.setProjection(Projections.groupProperty("age"));
List<TUser> list=criteria.list();
for(TUser user:list){
System.out.println(user);
}
ProjectionList projectionlist=Projections.ProjectionList();
projectionList.add(Projections.groupProperty("age"));
projectionList.add9Projections.rowCount());
Criteria criteria=session.createCriteria(TUser.class);
criteria.setProjection(projectionList);
]]>
涓婚敭鍏寵仈錛?/strong>鍗充袱寮犺〃閫氳繃涓婚敭褰㈡垚涓瀵逛竴鏄犲皠鍏崇郴銆?/p>
鐢ㄦ埛TUser涓庢姢鐓Passport鍏寵仈
TUer.hbm.xml
<hibernate-mapping>
<class
name="
TUser"
table="T_User">
<one-to-one
name="passport"
class="
TPassport"
cascade="all"
outer-join="true"/>
</class>
</hibernate-mapping>
TPassport.hbm.xml
<hibernate-mapping>
<class
name="
TPassport"
table="T_Passport">
<one-to-one
name="user"
class="
TUser"
constrain="true">
.
</class>
</hibernate-mapping>
嫻嬭瘯浠g爜錛?br />
TUser user = new TUser();
user.setAge(new Integer(20));
user.setName("Carin");
TPassport passport = new TPassport();
passport.setSerial("PCN759386");
passport.setExpiry(new Integer(20080101));
//鐩鎬簰璁劇疆鍏寵仈
passport.setUser(user);
user.setPassport(passport);
Transaction tx = sessioin.beginTransaction();
//鐢變簬TUser綾葷殑one-to-one鑺傜偣琚緗垚
//cascade=“all”鍏跺叧鑱旂殑passport瀵硅薄灝嗚綰ц仈淇濆瓨
session.save(user);
tx.commit();
TUser user=(TUser)Hibernate.load(TUser.class,new Integer(15));
System.out.println("User name=>"+user.getName());
System.out.println("Passport Serial=>"+user.getPassport().getSerial());
Hibernate:select tuser0_.id as id1_,
from T_USER tuser0_
left outer join
T_PASSPORT tpassport1_ on tuser0_.id=tpassport1_.id
where tuser0_.id=?
User name=>Carin
Passport Serial=>PCN759386
涓瀵瑰鍏寵仈
鐢ㄦ埛TUser鍜屽湴鍧TAddress鐨勪竴瀵瑰鍏寵仈銆?br />
鍗曞悜涓瀵瑰鍏寵仈
涓繪帶鏂筎User鐨勬槧灝勯厤緗細
<hibernate-mapping>
<class
name="
TUser"
table="t_user"
dynamic-update="true"
dynamic-insert="true">
.
<set
name="address"
table="t_address"
cascade="all"
order-by="zipcode asc">
<key column="user_id"/>
<one-to-many class="
TAddress">
</set>
</class>
</hibernate>
鍙屽悜澶氬涓鍏寵仈
瀹為檯涓婃槸“涓瀵瑰”涓?#8220;澶氬涓”鍏寵仈鐨勭粍鍚堛備篃灝辨槸璇存垜浠繀欏誨湪涓繪帶鏂歸厤緗竴瀵瑰鍏崇郴鐨勫熀紜涓婏紝鍦ㄨ鎺ф柟閰嶇疆涓庡叾瀵瑰簲鐨勫瀵逛竴鍏寵仈銆?br />
TUser.hbm.xml
<hibernate-mapping>
<class
name="
TUser"
table="t_user"
dynamic-update="true"
dynamic-insert="true">
.
<set
name="address"
table="t_address"
lazy="false"
inverse="true"
cascade="all"
sort="unsorted"
order-by="zipcode asc">
<key column="user_id"/>
<one-to-many class="
TAddress"/>
</set>
.
</class>
</hibernate>
<hibernat-mapping>
<class
name="
TAddress"
table="t_address"
dynamic-update="false"
dynamic-insert="false">
.
<many-to-one
name="user"
class="TUser"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="user_id"
not-null="true"/>
.
</class>
</hibernate-mapping>
澶氬澶氬叧鑱?br />
闇瑕佸熷姪涓棿琛ㄦ潵瀹屾垚澶氬澶氭槧灝勪俊鎭殑淇濆瓨銆?br />
鐢變簬澶氬澶氬叧鑱旂殑鎬ц兘涓嶄匠錛堢敱浜庡紩鍏ヤ簡涓棿琛紝涓嬈¤鍙栨搷浣滈渶瑕佸弽澶嶅嬈℃煡璇級錛屽洜姝ゅ湪璁捐涓簲璇ラ伩鍏嶅ぇ閲忎嬌鐢ㄣ傚悓鏃訛紝鍦ㄥ瀵瑰鍏崇郴涓紝搴旀牴鎹儏鍐碉紝閲囧彇寤惰繜鍔犺澆鏈哄埗鏉ラ伩鍏嶆棤璋撶殑鎬ц兘寮閿銆?br />
TGroup涓嶵Role鐨勫瀵瑰鍏寵仈錛?br />
TGroup.hbm.xml錛?br />
<hibernate-mapping>
<class
name="
TGroup"
table="t_group"
dynamic-update="false"
dynamic-insert="false">
.
<set
name="roles"
table="t_group_role"
lazy="false"
inverse="false"
cascade="save-update">
<key column="group_id"/>
<many-to-many
class="
TRole"
column="role_id"/>
</set>
.
</class>
</hibernate>
TRole.hbm.xml錛?br />
<hibernate-mapping>
<class
name="
TRole"
table="t_role"
dynamic-update="false"
dynamic-insert="false">
.
<set
name="groups"
table="t_group_role"
lazy="false"
inverse="true"
cascade="save-update"
sort="unsorted">
<key column="role_id"/>
<many-to-many
class="
TGroup"
column="group_id"
outer-join="auto"/>
</set>
.
</class>
</hibernate>
]]>
]]>
<property name="addtime" column="add_time" type="date" not-null="true">
濡傛灉鎸夌収涓婇潰鐨勬彁紺?鍒欏彂鐜?鐢熸垚鐨勬椂闂?鍙兘綺劇‘鍒版棩,濡?2007-08-08,鑰屾垜浠渶瑕佺殑鏄?2007-08-08 21:21:34
鏈変漢鎻愮ず鍙互鏀規(guī)垚java.sql.Date綾誨瀷,鎴戞病璇曡繃,鍥犱負鍦ㄧ▼搴忎腑鐢ㄧ殑澶氱殑鏄?java.util.Date
鍏跺疄,閫氳繃綆鍗曠殑淇敼XML鏂囦歡灝卞彲浠ュ緱鍒?007-08-08 21:21:34
<property name="addTime">
<column name="add_time"
sql-type="datetime" not-null="true"/>
</property>
榪欐牱淇敼,搴旇鏇村彲浠ヨ澶у鎵鎺ュ彈
鍦╯truts-config.xml鐨勮璁¤鍥句腑鍙互閫夋嫨"鏂板鏁版嵁婧?錛孧yeclipse浼氬脊鍑哄悜瀵肩獥鍙o紝榪欓噷浣跨敤鐨勭己鐪丏ataSource鐨凾ype鏄?org.apache.struts.util.GenericDataSource"錛岃岀敤DBCP鏁版嵁婧愮殑璇濋渶瑕佹敼涓?org.apache.commons.dbcp.BasicDataSource"錛屽綋鐒朵簡閫氳繃Myeclipse鎻掑叆鐨凷truts妗嗘灦涓槸緙哄皯DBCP鐨勫寘鐨勶紝濂藉湪Tomcat鐢ㄧ殑灝辨槸榪欎釜錛屽洜姝よ兘澶熷湪Tomcat\common\lib鐩綍涓壘鍒伴渶瑕佺殑鍖咃細
1.commons-dbcp-1.2.1.jar
2.commons-pool-1.2.jar
鍦ㄥ伐紼嬬殑閰嶇疆璺緞涓姞鍏ュ嵆鍙?涔熷彲浠ヤ粠apache鐨勭綉绔欎笂 涓嬭澆
Myeclipse鐨勫悜瀵肩獥鍙d腑鍏鋒湁涓浜涘睘鎬ф爮錛屽湪榪欓噷鍙互杈撳叆鏁版嵁婧愪嬌鐢ㄧ殑Driver綾誨悕浠ュ強URL錛屽綋鐒惰繕鏈夌敤鎴峰悕/瀵嗙爜銆?br /> 灞炴ф爮鍏ㄩ儴閮介厤緗畬姣曞悗錛屼細鍦╯truts-config.xml鏂囦歡涓姞鍏?lt;data-sources>鏍囩錛岃繖閲岄潰鐨?lt;data-source>鍗蟲槸鍒氬垰鏂板緩鐨勬暟鎹簮閰嶇疆鍙傛暟錛岃繖閲岄渶瑕佹墜宸ユ洿鏀癸細
1.澧炲姞<data-source>鏍囩鐨則ype灞炴э紝榪欐牱 <data-source type="org.apache.commons.dbcp.BasicDataSource">錛?br /> 2.灞炴у悕 driverClass 鏀逛負 dirverClassName錛?br /> 3.灞炴у悕 user 鏀逛負username錛屾敞鎰弉鏄皬鍐欑殑錛?br /> 4.鍘繪帀灞炴ф爣絳?loginTimeout銆?/p>
鏀瑰畬浠ュ悗灝卞彲浠ュ惎鍔═omcat鐪嬫晥鏋滀簡
(1)鎵鏈夋暟鎹兘搴旇闅愯棌鍦ㄦ墍鍦ㄧ殑綾葷殑鍐呴儴銆俻13 |
(2)綾葷殑浣跨敤鑰呭繀欏諱緷璧栫被鐨勫叡鏈夋帴鍙o紝浣嗙被涓嶈兘渚濊禆瀹冪殑浣跨敤鑰呫俻15 |
(3)灝介噺鍑忓皯綾葷殑鍗忚涓殑娑堟伅銆俻16 |
(4)瀹炵幇鎵鏈夌被閮界悊瑙g殑鏈鍩烘湰鍏湁鎺ュ彛[渚嬪錛屾嫹璐濇搷浣?娣辨嫹璐濆拰嫻呮嫹璐?銆佺浉絳夋у垽鏂佹紜緭鍑哄唴瀹廣佷粠ASCII鎻忚堪瑙f瀽絳夌瓑]銆?p16 |
(5)涓嶈鎶婂疄鐜扮粏鑺?渚嬪鏀劇疆鍏辯敤浠g爜鐨勭鏈夊嚱鏁?鏀懼埌綾葷殑鍏湁鎺ュ彛涓俻17 |
濡傛灉綾葷殑涓や釜鏂規(guī)硶鏈変竴孌靛叕鍏變唬鐮侊紝閭d箞灝卞彲浠ュ垱寤轟竴涓槻姝㈣繖浜涘叕鍏變唬鐮佺殑縐佹湁鍑芥暟銆?/td> |
(6)涓嶈浠ョ敤鎴鋒棤娉曚嬌鐢ㄦ垨涓嶆劅鍏磋叮鐨勪笢瑗挎壈涔辯被鐨勫叕鏈夋帴鍙c俻17 |
(7)綾諱箣闂村簲璇ラ浂鑰﹀悎錛屾垨鑰呭彧鏈夊鍑鴻﹀悎鍏崇郴銆備篃鍗籌紝涓涓被瑕佷箞鍚屽彟涓涓被姣棤鍏崇郴錛岃涔堝彧浣跨敤鍙︿竴涓被鐨勫叕鏈夋帴鍙d腑鐨勬搷浣溿?p18 |
(8)綾誨簲璇ュ彧琛ㄧず涓涓叧閿娊璞°俻19 |
鍖呬腑鐨勬墍鏈夌被瀵逛簬鍚屼竴綾繪ц川鐨勫彉鍖栧簲璇ユ槸鍏卞悓灝侀棴鐨勩備竴涓彉鍖栬嫢瀵逛竴涓寘褰卞搷錛屽垯灝嗗鍖呬腑鐨勬墍鏈夌被浜х敓褰卞搷錛岃屽鍏朵粬鐨勫寘涓嶉犳垚浠諱綍褰卞搷 . |
(9)鎶婄浉鍏崇殑鏁版嵁鍜岃涓洪泦涓斁緗俻19 |
璁捐鑰呭簲褰撶暀鎰忛偅浜涢氳繃get涔嬬被鎿嶄綔浠庡埆鐨勫璞′腑鑾峰彇鏁版嵁鐨勫璞°傝繖縐嶇被鍨嬬殑琛屼負鏆楃ず鐫榪欐潯緇忛獙鍘熷垯琚繚鍙嶄簡銆?/td> |
(10)鎶婁笉鐩稿叧鐨勪俊鎭斁鍦ㄥ彟涓涓被涓?涔熷嵆錛氫簰涓嶆矡閫氱殑琛屼負)銆俻19 |
鏈濈潃紼沖畾鐨勬柟鍚戣繘琛屼緷璧? |
(11)紜繚浣犱負涔嬪緩妯$殑鎶借薄姒傚康鏄被錛岃屼笉鍙槸瀵硅薄鎵紨鐨勮鑹層俻23 |
(12)鍦ㄦ按騫蟲柟鍚戜笂灝藉彲鑳界粺涓鍦板垎甯冪郴緇熷姛鑳斤紝涔熷嵆錛氭寜鐓ц璁★紝欏跺眰綾誨簲褰撶粺涓鍦板叡浜伐浣溿俻30 |
(13)鍦ㄤ綘鐨勭郴緇熶腑涓嶈鍒涘緩鍏ㄨ兘綾?瀵硅薄銆傚鍚嶅瓧鍖呭惈Driver銆丮anager銆丼ystem銆丼usystem鐨勭被瑕佺壒鍒鍔犲皬蹇冦俻30 |
瑙勫垝涓涓帴鍙h屼笉鏄疄鐜頒竴涓帴鍙c?/td> |
(14)瀵瑰叕鍏辨帴鍙d腑瀹氫箟浜嗗ぇ閲忚闂柟娉曠殑綾誨鍔犲皬蹇冦傚ぇ閲忚闂柟娉曟剰鍛崇潃鐩稿叧鏁版嵁鍜岃涓烘病鏈夐泦涓瓨鏀俱俻30 |
(15)瀵瑰寘鍚お澶氫簰涓嶆矡閫氱殑琛屼負鐨勭被澶氬姞灝忓績銆俻31 |
榪欎釜闂鐨勫彟涓琛ㄧ幇鏄湪浣犵殑搴旂敤紼嬪簭涓殑綾葷殑鍏湁鎺ュ彛涓垱寤轟簡寰堝鐨刧et鍜宻et鍑芥暟銆?/td> |
(16)鍦ㄧ敱鍚岀敤鎴風(fēng)晫闈氦浜掔殑闈㈠悜瀵硅薄妯″瀷鏋勬垚鐨勫簲鐢ㄧ▼搴忎腑錛屾ā鍨嬩笉搴旇渚濊禆浜庣晫闈紝鐣岄潰鍒欏簲褰撲緷璧栦簬妯″瀷銆俻33 |
(17)灝藉彲鑳藉湴鎸夌収鐜板疄涓栫晫寤烘ā(鎴戜滑甯稿父涓轟簡閬靛畧緋葷粺鍔熻兘鍒嗗竷鍘熷垯銆侀伩鍏嶅叏鑳界被鍘熷垯浠ュ強闆嗕腑鏀劇疆鐩稿叧鏁版嵁鍜岃涓虹殑鍘熷垯鑰岃繚鑳岃繖鏉″師鍒? 銆俻36 |
(18)浠庝綘鐨勮璁′腑鍘婚櫎涓嶉渶瑕佺殑綾匯俻38 |
涓鑸潵璇達紝鎴戜滑浼氭妸榪欎釜綾婚檷綰ф垚涓涓睘鎬с?/td> |
(19)鍘婚櫎緋葷粺澶栫殑綾匯俻39 |
緋葷粺澶栫殑綾葷殑鐗圭偣鏄紝鎶借薄鍦扮湅瀹冧滑鍙線緋葷粺棰嗗煙鍙戦佹秷鎭絾騫朵笉鎺ュ彈緋葷粺棰嗗煙鍐呭叾浠栫被鍙戝嚭鐨勬秷鎭? |
(20)涓嶈鎶婃搷浣滃彉鎴愮被銆傝川鐤戜換浣曞悕瀛楁槸鍔ㄨ瘝鎴栬呮淳鐢熻嚜鍔ㄨ瘝鐨勭被錛岀壒鍒槸鍙湁涓涓湁鎰忎箟琛屼負鐨勭被銆傝冭檻涓涓嬮偅涓湁鎰忎箟鐨勮涓烘槸鍚﹀簲褰撹縼縐誨埌宸茬粡瀛樺湪鎴栬呭皻鏈彂鐜扮殑鏌愪釜綾諱腑銆俻40 |
(21)鎴戜滑鍦ㄥ垱寤哄簲鐢ㄧ▼搴忕殑鍒嗘瀽妯″瀷鏃跺父甯稿紩鍏ヤ唬鐞嗙被銆傚湪璁捐闃舵錛屾垜浠父浼氬彂鐜板緢澶氫唬鐞嗘病鏈夌敤鐨勶紝搴斿綋鍘婚櫎銆俻43 |
(22)灝介噺鍑忓皯綾葷殑鍗忎綔鑰呯殑鏁伴噺銆俻52 |
涓涓被鐢ㄥ埌鐨勫叾浠栫被鐨勬暟鐩簲褰撳敖閲忓皯銆? |
(23)灝介噺鍑忓皯綾誨拰鍗忎綔鑰呬箣闂翠紶閫掔殑娑堟伅鐨勬暟閲忋俻55 |
(24)灝介噺鍑忓皯綾誨拰鍗忎綔鑰呬箣闂寸殑鍗忎綔閲忥紝涔熷嵆錛氬噺灝戠被鍜屽崗浣滆呬箣闂翠紶閫掔殑涓嶅悓娑堟伅鐨勬暟閲忋俻55 |
(25)灝介噺鍑忓皯綾葷殑鎵囧嚭錛屼篃鍗籌細鍑忓皯綾誨畾涔夌殑娑堟伅鏁板拰鍙戦佺殑娑堟伅鏁扮殑涔樼Н銆俻55 |
(26)濡傛灉綾誨寘鍚彟涓涓被鐨勫璞★紝閭d箞鍖呭惈綾誨簲褰撶粰琚寘鍚殑瀵硅薄鍙戦佹秷鎭備篃鍗籌細鍖呭惈鍏崇郴鎬繪槸鎰忓懗鐫浣跨敤鍏崇郴銆俻55 |
(27)綾諱腑瀹氫箟鐨勫ぇ澶氭暟鏂規(guī)硶閮藉簲褰撳湪澶у鏁版椂闂撮噷浣跨敤澶у鏁版暟鎹垚鍛樸俻57 |
(28)綾誨寘鍚殑瀵硅薄鏁扮洰涓嶅簲褰撹秴榪囧紑鍙戣呯煭鏈熻蹇嗙殑瀹歸噺銆傝繖涓暟鐩父甯告槸6銆俻57 |
褰撶被鍖呭惈澶氫簬6涓暟鎹垚鍛樻椂錛屽彲浠ユ妸閫昏緫鐩稿叧鐨勬暟鎹垚鍛樺垝鍒嗕負涓緇勶紝鐒跺悗鐢ㄤ竴涓柊鐨勫寘鍚被鍘誨寘鍚繖涓緇勬垚鍛樸? |
(29)璁╃郴緇熷姛鑳藉湪紿勮屾繁鐨勭戶鎵夸綋緋諱腑鍨傜洿鍒嗗竷銆俻58 |
(30)鍦ㄥ疄鐜拌涔夌害鏉熸椂錛屾渶濂芥牴鎹被瀹氫箟鏉ュ疄鐜般傝繖甯稿父浼氬鑷寸被娉涙互鎴愮伨錛屽湪榪欑鎯呭喌涓嬶紝綰︽潫搴斿綋鍦ㄧ被鐨勮涓轟腑瀹炵幇錛岄氬父鏄湪鏋勯犲嚱鏁頒腑瀹炵幇錛屼絾涓嶆槸蹇呴』濡傛銆俻60 |
(31)鍦ㄧ被鐨勬瀯閫犲嚱鏁頒腑瀹炵幇璇箟綰︽潫鏃訛紝鎶婄害鏉熸祴璇曟斁鍦ㄦ瀯閫犲嚱鏁伴鍩熸墍鍏佽鐨勫敖閲忔繁鐨勫寘鍚眰嬈′腑銆俻60 |
(32)綰︽潫鎵渚濊禆鐨勮涔変俊鎭鏋滅粡甯告敼鍙橈紝閭d箞鏈濂芥斁鍦ㄤ竴涓泦涓紡鐨勭3鏂瑰璞′腑銆俻60 |
(33)綰︽潫鎵渚濊禆鐨勮涔変俊鎭鏋滃緢灝戞敼鍙橈紝閭d箞鏈濂藉垎甯冨湪綰︽潫鎵娑夊強鐨勫悇涓被涓俻60 |
(34)綾誨繀欏葷煡閬撳畠鍖呭惈浠涔堬紝浣嗘槸涓嶈兘鐭ラ亾璋佸寘鍚畠銆俻61 |
(35)鍏變韓瀛楅潰鑼冨洿(涔熷氨鏄鍚屼竴涓被鎵鍖呭惈)鐨勫璞$浉浜掍箣闂翠笉搴斿綋鏈変嬌鐢ㄥ叧緋匯俻61 |
(36)緇ф壙鍙簲琚敤鏉ヤ負鐗瑰寲灞傛緇撴瀯寤烘ā銆俻74 |
(37)媧劇敓綾誨繀欏葷煡閬撳熀綾伙紝鍩虹被涓嶅簲璇ョ煡閬撳叧浜庡畠浠殑媧劇敓綾葷殑浠諱綍淇℃伅銆俻74 |
(38)鍩虹被涓殑鎵鏈夋暟鎹兘搴斿綋鏄鏈夌殑錛屼笉瑕佷嬌鐢ㄤ繚鎶ゆ暟鎹俻75 |
綾葷殑璁捐鑰呮案榪滈兘涓嶅簲璇ユ妸綾葷殑浣跨敤鑰呬笉闇瑕佺殑涓滆タ鏀懼湪鍏湁鎺ュ彛涓? |
(39)鍦ㄧ悊璁轟笂錛岀戶鎵垮眰嬈′綋緋誨簲褰撴繁涓鐐癸紝瓚婃繁瓚婂ソ銆俻77 |
(40)鍦ㄥ疄璺典腑錛岀戶鎵垮眰嬈′綋緋葷殑娣卞害涓嶅簲褰撹秴鍑轟竴涓櫘閫氫漢鐨勭煭鏈熻蹇嗚兘鍔涖備竴涓箍涓烘帴鍙楃殑娣卞害鍊兼槸6銆俻77 |
(41)鎵鏈夌殑鎶借薄綾婚兘搴斿綋鏄熀綾匯俻81 |
(42)鎵鏈夌殑鍩虹被閮藉簲褰撴槸鎶借薄綾匯俻82 |
(43)鎶婃暟鎹佽涓哄拰/鎴栨帴鍙g殑鍏辨у敖鍙兘鍦版斁鍒扮戶鎵垮眰嬈′綋緋葷殑楂樼銆俻85 |
(44)濡傛灉涓や釜鎴栨洿澶氫釜綾誨叡浜叕鍏辨暟鎹?浣嗘病鏈夊叕鍏辮涓?錛岄偅涔堝簲褰撴妸鍏叡鏁版嵁鏀懼湪涓涓被涓紝姣忎釜鍏變韓榪欎釜鏁版嵁鐨勭被閮藉寘鍚繖涓被銆?p88 |
(45)濡傛灉涓や釜鎴栨洿澶氫釜綾繪湁鍏卞悓鐨勬暟鎹拰琛屼負(灝辨槸鏂規(guī)硶)錛岄偅涔堣繖浜涚被鐨勬瘡涓涓兘搴斿綋浠庝竴涓〃紺轟簡榪欎簺鏁版嵁鍜屾柟娉曠殑鍏叡鍩虹被緇ф壙銆?p89 |
(46)濡傛灉涓や釜鎴栨洿澶氫釜綾誨叡浜叕鍏辨帴鍙?鎸囩殑鏄秷鎭紝鑰屼笉鏄柟娉?錛岄偅涔堝彧鏈変粬浠渶瑕佽澶氭佸湴浣跨敤鏃訛紝浠栦滑鎵嶅簲褰撲粠涓涓叕鍏卞熀綾葷戶鎵褲?p89 |
(47)瀵瑰璞$被鍨嬬殑鏄劇ず鐨勫垎鎯呭喌鍒嗘瀽涓鑸槸閿欒鐨勩傚湪澶у鏁拌繖鏍風(fēng)殑鎯呭喌涓嬶紝璁捐鑰呭簲褰撲嬌鐢ㄥ鎬併俻89 |
(48)瀵瑰睘鎬у肩殑鏄劇ず鐨勫垎鎯呭喌鍒嗘瀽甯稿父鏄敊璇殑銆傜被搴斿綋瑙h﹀悎鎴愪竴涓戶鎵垮眰嬈$粨鏋勶紝姣忎釜灞炴у奸兘琚彉鎹㈡垚涓涓淳鐢熺被銆?p96 |
(49)涓嶈閫氳繃緇ф壙鍏崇郴鏉ヤ負綾葷殑鍔ㄦ佽涔夊緩妯°傝瘯鍥劇敤闈欐佽涔夊叧緋繪潵涓哄姩鎬佽涔夊緩妯′細瀵艱嚧鍦ㄨ繍琛屾椂鍒囨崲綾誨瀷銆俻97 |
(50)涓嶈鎶婄被鐨勫璞″彉鎴愭淳鐢熺被銆傚浠諱綍鍙湁涓涓疄渚嬬殑媧劇敓綾婚兘瑕佸鍔犲皬蹇冦俻99 |
(51)濡傛灉浣犺寰楅渶瑕佸湪榪愯鏃跺埢鍒涘緩鏂扮殑綾伙紝閭d箞閫鍚庝竴姝ヤ互璁ゆ竻浣犺鍒涘緩鐨勬槸瀵硅薄銆傜幇鍦紝鎶婅繖浜涘璞℃鎷垚涓涓被銆?p103 |
(52)鍦ㄦ淳鐢熺被涓敤絀烘柟娉?涔熷氨鏄粈涔堜篃涓嶅仛鐨勬柟娉?鏉ヨ鍐欏熀綾諱腑鐨勬柟娉曞簲褰撴槸闈炴硶鐨勩俻103 |
(53)涓嶈鎶婂彲閫夊寘鍚悓瀵圭戶鎵跨殑闇瑕佺浉娣鋒穯銆傛妸鍙夊寘鍚緩妯℃垚緇ф壙浼氬甫鏉ユ硾婊ユ垚鐏劇殑綾匯俻108 |
(54)鍦ㄥ垱寤虹戶鎵垮眰嬈℃椂錛岃瘯鐫鍒涘緩鍙鐢ㄧ殑妗嗘灦錛岃屼笉鏄彲澶嶇敤鐨勭粍浠躲俻112 |
(55)濡傛灉浣犲湪璁捐涓嬌鐢ㄤ簡澶氶噸緇ф壙錛屽厛鍋囪浣犵姱浜嗛敊璇傚鏋滄病鐘敊璇紝浣犻渶瑕佽娉曡瘉鏄庛俻120 |
(56)鍙鍦ㄩ潰鍚戝璞¤璁′腑鐢ㄥ埌浜嗙戶鎵匡紝闂嚜宸變袱涓棶棰橈細(1)媧劇敓綾繪槸鍚︽槸瀹冪戶鎵跨殑閭d釜涓滆タ鐨勪竴涓壒孌婄被鍨嬶紵(2)鍩虹被鏄笉鏄淳鐢熺被鐨勪竴閮ㄥ垎錛焢121 |
(57)濡傛灉浣犲湪涓涓潰鍚戝璞¤璁′腑鍙戠幇浜嗗閲嶇戶鎵垮叧緋伙紝紜繚娌℃湁鍝釜鍩虹被瀹為檯涓婃槸鍙︿竴涓熀綾葷殑媧劇敓綾匯俻122 |
(58)鍦ㄩ潰鍚戝璞¤璁′腑濡傛灉浣犻渶瑕佸湪鍖呭惈鍏崇郴鍜屽叧鑱斿叧緋婚棿浣滃嚭閫夋嫨錛岃閫夋嫨鍖呭惈鍏崇郴銆俻123 |
(59)涓嶈鎶婂叏灞鏁版嵁鎴栧叏灞鍑芥暟鐢ㄤ簬綾葷殑瀵硅薄鐨勮杽璁板伐浣溿傚簲褰撲嬌鐢ㄧ被鍙橀噺鎴栫被鏂規(guī)硶銆俻140 |
(60)闈㈠悜瀵硅薄璁捐鑰呬笉搴斿綋璁╃墿鐞嗚璁″噯鍒欐潵鐮村潖浠栦滑鐨勯昏緫璁捐銆備絾鏄紝鍦ㄥ閫昏緫璁捐浣滃嚭鍐崇瓥鐨勮繃紼嬩腑鎴戜滑緇忓父鐢ㄥ埌鐗╃悊璁捐鍑嗗垯銆?p149 |
(61)涓嶈緇曞紑鍏叡鎺ュ彛鍘諱慨鏀瑰璞$殑鐘舵併俻164 |
<project name="timexdb">
<property name="hjar" value="WebRoot/WEB-INF/lib/hsqldb.jar" />
<property name="hclass" value="org.hsqldb.Server" />
<property name="hfile" value="-database.0 data/gogoudb" />
<property name="halias" value="gogou" />
<property name="hport" value="9005" />
<target name="starthsql">
<java fork="true"
classname="${hclass}"
classpath="${hjar}"
args="${hfile} -dbname.0 ${halias} -port ${hport}" />
</target>
<target name="execddl">
<sql classpath="${hjar}"
driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:${hport}/${halias}"
userid="sa"
password=""
print="yes">
-- SQL script for TimeX
-- Step 1: Drop objects if they exist
DROP TABLE Department IF EXISTS;
DROP TABLE Employee IF EXISTS;
DROP TABLE Timesheet IF EXISTS;
DROP INDEX TimesheetIndex IF EXISTS;
DROP INDEX DepartmentCodeIndex IF EXISTS;
DROP INDEX EmployeeIdIndex IF EXISTS;
DROP TABLE customer IF EXISTS;
DROP TABLE Item IF EXISTS;
DROP TABLE Item_subType IF EXISTS;
DROP TABLE Item_superType IF EXISTS;
DROP TABLE orders IF EXISTS;
-- Step 2: Create tables
CREATE TABLE Item_superType
(
superID BIGINT primary key,
superTypeName VARCHAR(20) NOT NULL
);
CREATE TABLE Item_subType
(
subID BIGINT primary key,
superID BIGINT,
subTypeName VARCHAR(20) NOT NULL,
FOREIGN KEY(superID) REFERENCES Item_superType(superID)
);
CREATE TABLE Item
(
itemID BIGINT primary key,
subID BIGINT,
itemName VARCHAR(20) NOT NULL,
Introduce VARCHAR(50) ,
Price VARCHAR(6) NOT NULL,
nowPrice VARCHAR(6) NOT NULL,
smallPicture VARCHAR(10) NOT NULL,
bigPicture VARCHAR(10) NOT NULL,
inTime datetime ,
newItem INT ,
Rebate INT ,
Hit INT ,
FOREIGN KEY(subID) REFERENCES Item_subType(subID)
);
CREATE TABLE customer
(
userID BIGINT IDENTITY,
username VARCHAR(20) NOT NULL,
Password VARCHAR(20) NOT NULL,
userCity VARCHAR(20) ,
userEmail VARCHAR(20) NOT NULL,
userAge INT ,
userSex INT
);
CREATE TABLE orders
(
orderID BIGINT IDENTITY,
consigneeName VARCHAR(20) NOT NULL,
consigneeAddress VARCHAR(20) NOT NULL,
Postalcode VARCHAR(6) NOT NULL,
Telephone VARCHAR(20) NOT NULL,
carryMethod VARCHAR(10) NOT NULL,
Orderdate datetime
);
CREATE TABLE visualOrder
(
id BIGINT IDENTITY,
itemID BIGINT,
userID BIGINT,
orderID BIGINT,
itemNumber BIGINT NOT NULL,
FOREIGN KEY(itemID) REFERENCES Item(itemID),
FOREIGN KEY(userID) REFERENCES customer(userID),
FOREIGN KEY(orderID) REFERENCES orders(orderID)
);
-- Step 3: Create indexes
CREATE UNIQUE INDEX visualOrderIndex ON visualOrder (userID);
CREATE UNIQUE INDEX ItemIndex ON Item (itemID);
CREATE UNIQUE INDEX userIdIndex ON customer (userId);
create view newItem_statistic as select * from item where item.newItem = 1;
create view saleItem_statistic as select * from item where item.Rebate = 1;
-- Step 4: Insert some reference and test data
INSERT INTO customer (userName, Password,userEmail)
VALUES ('kira', 'kira','xuguoliang@sina.com');
-- Step 5: Verify tables and test data look ok
SELECT * FROM customer;
</sql>
</target>
<target name="hsqldm">
<java fork="true" classpath="${hjar}" classname="org.hsqldb.util.DatabaseManagerSwing" />
</target>
<target name="sqltool">
<java fork="true" classpath="${hjar}" classname="org.hsqldb.util.SqlTool" args="localhost-sa" />
</target>
</project>