#
借windows7系統(tǒng)的風(fēng)光。我這幾天也開始玩win7,筆記本系統(tǒng)我都重裝了5-6次了,考慮到win7還不成熟、我又比較喜歡win7,所以考慮使用裝雙系統(tǒng)XP+WIN7,花了2個小時將XP、WIN7重新全部安裝,打好補(bǔ)丁,升級,將自己常用的軟件都安裝上
工作原因需要安裝ORACLE,考慮雙系統(tǒng)中都安裝ORACLE,系統(tǒng)切換之間數(shù)據(jù)的使用也需要一起切換,考慮XP和WIN7都安裝ORACLE軟件,公用一個數(shù)據(jù)庫文件。經(jīng)過幾個小時的奮戰(zhàn),終于完成預(yù)期的目標(biāo)。
首先是雙系統(tǒng)的安裝中需要注意的,2個系統(tǒng)的機(jī)器名必須一樣。否則再同步的時候會出現(xiàn)錯誤,這種錯誤也都是能再裝完之后解決,所以,機(jī)器名不一樣也可以,就是后面麻煩下而已。
系統(tǒng)硬盤規(guī)劃如下:(硬盤320G分區(qū)買來就是分的4個區(qū),本人懶惰,也就懶得再去分小了、因安裝的是雙系統(tǒng)的原因,C盤和D盤再顯示上會根據(jù)登陸的系統(tǒng)而變化、最后2個分區(qū)則不變化,所以將公用數(shù)據(jù)文件安裝再DISK1盤)
首先我在XP系統(tǒng)的系統(tǒng)盤上只安裝10.2.0.1.0數(shù)據(jù)庫軟件。
然后再單獨創(chuàng)建數(shù)據(jù)庫(單獨創(chuàng)建的數(shù)據(jù)庫文件位置存放再DISK1中如:oradb)。
建立監(jiān)聽、配置本地NET服務(wù)名。
一切完好之后再使用升級補(bǔ)丁,將Oracle升級至10.2.0.3.0,升級時間大約30分鐘,根據(jù)電腦性能時間會有變化。
然后再切換至WIN7系統(tǒng)中同樣的方法安裝Oracle,因為WIN7系統(tǒng)的oracle版本使用的是for vista 版本。版本號為10.2.0.3.0,無需升級。
WIN7系統(tǒng)的系統(tǒng)盤上只安裝10.2.0.3.0數(shù)據(jù)庫軟件。。
然后再單獨創(chuàng)建數(shù)據(jù)庫(單獨創(chuàng)建的數(shù)據(jù)庫文件位置同樣存放再DISK1中如:oradb,覆蓋掉再XP系統(tǒng)中ORACLE創(chuàng)建的數(shù)據(jù)庫文件)。
然后回到切換至XP系統(tǒng),將WIN7系統(tǒng)中ORACLE目錄oracle"product"10.2.0"db_1"database下的SPFILEORCL.ORA復(fù)制到XP系統(tǒng)中oracle同級
目錄下SPFILEORCL.ORA覆蓋掉。啟動數(shù)據(jù)庫會出現(xiàn)ORA-00201 ,ORA-00202錯誤,解決方法如下:
進(jìn)入cmd運行界面。用sysdba賬號登陸。然后運行以下命令:
create pfile from spfile;
shutdown immediate
startup mount pfile='d:"oracle"product"10.1.0"Db_2"database"initorcl.ora'
show parameter compatible
shutdown immediate
startup
檢查運行,完成后創(chuàng)建表空間等信息、完成后返回WIN7系統(tǒng),即可同步操作數(shù)據(jù)。此方法是雙擊冷備的思想。
在pl/sql里怎樣進(jìn)行半,全角轉(zhuǎn)換?
To_Multi_Byte(str)
To_Single_Byte(str)
轉(zhuǎn)http://www.gzit.org/27/viewspace-3306.html
package com;
import java.util.ArrayList;關(guān)注ITz]'p6g5n-KlX
import java.util.List;
public class SimpleTest{關(guān)注IT1rq3XJw8K.uk&fK$w
關(guān)注IT IQvF'S3U
/**
ZyJ9l2@9@K0 *關(guān)注IT)~d3X(v*^ \jn3M
* @return 所有公司
t8~)^.L.kq9Y0 */關(guān)注IT_ s9A?i:^Z
public List<Company> getAllCompany(){
`Gq(c rzCG0 List<Company> list = new ArrayList<Company>();關(guān)注ITyc?n#P3H
Company company = null;關(guān)注ITm n"o@a%vF#p8O
company = new Company(1,"廣西博聯(lián)信息通信技術(shù)有限責(zé)任公司");關(guān)注IT7p9wloKHs
list.add(company);
\t%? EgoZ/Jl3FI6r0 company = new Company(2,"能創(chuàng)信息科技有限責(zé)任公司");關(guān)注IT:kA E+Kh#UI
list.add(company);
@"E}.U0t,V1I0 return list;關(guān)注IT9l#W*{"s&m
}
!l0{"PF/z&y R9a.o/y0
Ue3t N0^q%v.E0 /**
)^ D*FpTn+a5I!e0 *關(guān)注IT[1r^3g"Q,Ih
* @param companyId 公司編號
-aWE)@QP&?}0 * @return 公司下所有部門
@4M,|PVgn!H L0 */關(guān)注IT0ZGrm:b'?
public List<Department> getDepartment(int companyId){
W(o&TK Is0hC0 List<Department> list = new ArrayList<Department>();關(guān)注IT4V0v(t)v1J.TM,m.y
Department department = null;
Wvc(d"g4D eV2A0 if(companyId==1){關(guān)注IT]$Z$X*W*mv8`%qQ
department = new Department(1,1,"軟件事業(yè)部");關(guān)注IT]!A F)AV\$I5J
list.add(department);關(guān)注ITIYRRcSj
department = new Department(2,1,"工程部");關(guān)注ITU rCpeq8M
list.add(department);
5O#{ `8v8Ta)}B$L0 }else{關(guān)注IT ug,L?5[:y@k C:]
department = new Department(1,2,"企管部");關(guān)注ITk/BY3iM/X,`%e
list.add(department);關(guān)注IT&I7Z9{5`kV/l Avj |5L
department = new Department(2,2,"財務(wù)部");
b'jm;yVa'Ww;Ea0 list.add(department);
z W Pp$yx3M0 }關(guān)注ITG gA3V5t0^ xM
return list;
4O v#k$x:P3n0 }關(guān)注IT$tV5JN8sF u:FJ
y'b-^Bma0 /**關(guān)注IT/A(^g]jU P*u-\,H
*關(guān)注IT:m'| NmVWtX/Y
* @param departmentId 部門編號關(guān)注IT} l)^8GbA
* @return 部門下所有員工關(guān)注IT.^VB |7V;b D'J'eH+n
*/
2gkge \x/ip-c4tW0 public List<Person> getPerson(int departmentId){關(guān)注ITFR*B5bnj_2[&Q
List<Person> list = new ArrayList<Person>();
A@T5y8M]:H5h/c0 Person person = null;關(guān)注ITK Z-M ~MF
if(departmentId==1){關(guān)注IT\t.T\3Mx
person = new Person(1,1,"張三");關(guān)注ITe)_3a4xcw
list.add(person);
wkw2P)G u7G(Z0 person = new Person(2,1,"李四");
{ uhJ;y9V&C` H0 list.add(person);
%q(xK1? VR0 }else{
s|] l)J:@o,p@y0 person = new Person(1,2,"王五");關(guān)注ITi'j*FST I
list.add(person);關(guān)注IT^@j { x US i
person = new Person(2,2,"趙六");關(guān)注IT ux#kse o;W
list.add(person);
4B/cP*v5z [P0 }關(guān)注IT g Bc!D)p*jB)X
return list;關(guān)注IT'X:[] lH
}
}
d z-]6Gn/T9f1OR0
|
package com;
public class Company {
private int id;關(guān)注IT|:NQQ,|8W,D!QV
private String companyName;
$ffG s&X1|I0 關(guān)注ITy*eK ~4xog
public Company(int id,String companyName){
.q;k2a&}j*LL0 this.id = id;
'\ u:Jpv)j0 this.companyName = companyName;關(guān)注ITV[,Ty8Fu
}
public int getId() {關(guān)注IT:F| |n-n!w$sX5PL
return id;
NPPJ,?0 }
public void setId(int id) {關(guān)注ITh2emjTe il+[D
this.id = id;
W@b ` L4i0 }
public String getCompanyName() {關(guān)注IT$wP8oO%} ?xe4k
return companyName;
S0Kz%GX$?auN W0 }
public void setCompanyName(String companyName) {
zMv*g ic8S&YqcN0 this.companyName = companyName;
v\'x-pT0 }
}
*mHu$CU~wb9x x0
|
package com;
public class Department {
private int id;關(guān)注IT [n0zYU
private int companyId;關(guān)注IT$S __L'FDvy2WD
private String departmentName;
public Department(int id, int companyId, String departmentName) {
,ni)o5G$yL'[o(}Q0 this.id = id;
q3Gzw"E6v8?o.MT0 this.companyId = companyId;關(guān)注IT+r"mo:pO$L![4U
this.departmentName = departmentName;
/q\6Aj5]0m3G#l-P9a0 }
public int getId() {
w"j`I` J0 return id;
x(P!d6tu v a"T0 }
public void setId(int id) {關(guān)注ITlQ1r8wS5_'hb
this.id = id;關(guān)注IT pGy3Jl{0tkW
}
public int getCompanyId() {
@!PpRi0 return companyId;關(guān)注ITs c!i"DQ5_D
}
public void setCompanyId(int companyId) {關(guān)注ITrp` i5D/_L
this.companyId = companyId;關(guān)注ITYT+Y6CkJ t2x
}
public String getDepartmentName() {
fSa p.@9e&L0 return departmentName;關(guān)注IT!Pe L6m D7n wM
}
public void setDepartmentName(String departmentName) {關(guān)注IT/bD(o/RPq
this.departmentName = departmentName;
'|S4q p4]0 }
}關(guān)注IT){0[0DsY:te9V A r$T
|
package com;
public class Person {
private int id;
U{*D:dw+i6W0 private int departmentId;
q6a e ?5u5\ b|0?]KI0 private String userName;
public Person(int id,int departmentId, String userName) {關(guān)注IT#c%qN s2Xup kIc
this.id = id;關(guān)注ITs%z&uZ2T Bbj
this.departmentId = departmentId;
|5nI&y.LO y)Cx(C.r b"x0 this.userName = userName;關(guān)注IT_,ep*n(H
}
public int getDepartmentId() {關(guān)注IT&ue1rG X%WJN[
return departmentId;
"qn%DVY2mGh0 }
public void setDepartmentId(int departmentId) {關(guān)注ITa? d(_7s
this.departmentId = departmentId;關(guān)注IT+`vt Pb4oS
}
public String getUserName() {
]etq"Seza0 return userName;
3fZn} j-z(V+ir,a0 }
public void setUserName(String userName) {
9pWKaR|0 this.userName = userName;
~FT_7a/l6lD$}V0 }
public int getId() {
*i:k5KIZyr'o0 return id;
g+j[M(o`0 }
public void setId(int id) {
vBj&P/` DUqB0 this.id = id;
:x:d5MOwo0 }
}
-KIsR)D9j7a+VDr rE3Ve0
|
<?xml version="1.0" encoding="UTF-8"?>關(guān)注ITWF0A~V
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "dwr10.dtd" >關(guān)注IT GszT,f+Fc:RT
<dwr>
P/QC qq)cf0 <allow>關(guān)注IT.M%D9A4u{A&^`
<!-- 聲明哪個類可以提供JS直接調(diào)用 -->
Nf9r/PN%N-Du)D0 <create javascript="SimpleTest" creator="new">關(guān)注IT'T G m*[5A\#|1~;`%Y
<param name="class" value="com.SimpleTest"></param>
\u)NR5z5QSP7t&@0 <!-- 該類里公開出來給JS調(diào)用的方法 -->
sh+c`K#sL'T#l0 <include method="getAllCompany" />關(guān)注IT$|i'^(lf$`y[2x I
<include method="getDepartment" />
cP(^2LF5c:K$s*ce0 <include method="getPerson" />
_/J0?wiqL%w0 </create>
/zms8Vonw0 <!-- 類型轉(zhuǎn)換 -->關(guān)注IT N*a#}ip*^H
<convert match="com.Person" converter="bean">
.pV*p:QtOB0 <param name="include" value="id,departmentId,userName"></param>
5v8V6|3`U-WPya)nS0 </convert>
vu| ow4J b ^)@0 <convert match="com.Department" converter="bean">關(guān)注IT.g SgkS'u S]`
<param name="include" value="id,companyId,departmentName"></param>關(guān)注ITX~_L nT
</convert>
p3G!a/V;|y0 <convert match="com.Company" converter="bean">關(guān)注IT W6L q.dtp%Qv\
<param name="include" value="id,companyName"></param>
z+sas-D)C"PS,|0 </convert>關(guān)注ITD/g|U2c:Y
</allow>關(guān)注IT"['f&XZ`~
</dwr>關(guān)注IT,FruT'[ m%A1M
|
<%@ page language="java" pageEncoding="GB18030"%>關(guān)注IT*B&kW!{i
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
lgX^J G0<html>關(guān)注ITi'l*l#zG(q
<head>
uLA#O!~1s:c@0 <title>My JSP 'simpleTest.jsp' starting page</title>
eI-k1b-TDW w0 關(guān)注IT7g h.ICd(r
<meta. http-equiv="pragma" content="no-cache">關(guān)注ITQ _-x5Mm
<meta. http-equiv="cache-control" content="no-cache">關(guān)注ITe}yN |"S
<meta. http-equiv="expires" content="0"> 關(guān)注ITax(bO%Odh
<meta. http-equiv="keywords" content="keyword1,keyword2,keyword3">
t%X$Wjx&VH.`0 <meta. http-equiv="description" content="This is my page">
/[Y7V5~PEWQ p0
5b Z{3V!q O V5x1u!e0 </head>
)gD&OE\0 <script. type="text/javascript" src="dwr/engine.js"></script>關(guān)注IT1r"V3R{cP/~3Jc7Q
<script. type="text/javascript" src="dwr/util.js"></script>關(guān)注IT#bM"@K,O@ X
<script. type="text/javascript" src="dwr/interface/SimpleTest.js"></script>關(guān)注ITi(V6w \6~!l/a A#s [
6_*@k$wN0 <body nload="initial()">關(guān)注IT!nt9lT`1e/M%h
<script. type="text/javascript">
y]#zLJE0 /*頁面初始加載公司欄目*/關(guān)注IT?%]%wR7ICTg0_
function initial(){
'h&BHt iEU0 SimpleTest.getAllCompany(function(data){dealSelect("i",data)});關(guān)注ITjty,Fwrb
}關(guān)注IT&I!\_N d4xYHd
/*獲取下拉菜單的值并填充下一欄目*/
w)UR!qK$ma0 function show(flag){關(guān)注IT(y4Ff L4U5i
if(flag=="c"){關(guān)注ITI$o+U{]r+k[Y
var companyId = $("company").value;
_$|"Q7s)K-m"[/z*[)n0 SimpleTest.getDepartment(companyId,function(data){dealSelect(flag,data)});
cAj9K(u/g] E)I v6Iw0 }else if(flag=="d"){
J$L&o2}pD6kw0 var departmentId = $("department").value;
u}u'`\6~d*^0 SimpleTest.getPerson(departmentId,function(data){dealSelect(flag,data)});
0@Vy ~cZF |0 }
'X#Wc ?'| nW0 }關(guān)注ITk @#n[[&L&_OP5]4_o
/*填充select的內(nèi)容*/
NgcV,[0X0 function dealSelect(flag,data){
G YKF-I6HRfu)d0 clearSelect(flag);
1tC0BTVC?r3F0 if(flag=="c"){
*Td\#}%kT(|0 DWRUtil.addOptions("department",data,"id","departmentName");
9N#R2Pt4B0 }else if(flag=="d"){
Oj"@2V$l,{6L:K0 DWRUtil.addOptions("person",data,"id","userName");關(guān)注IT(I'Syg7[g[ l+R5r"l
}else if(flag=="i"){
d'X'Fj5JJQ!Z8~0 DWRUtil.addOptions("company",data,"id","companyName");關(guān)注IT R W8[| x9a1QFq
}
~m+hRysQ P T,c)?a0@0 }關(guān)注IT!e6B&wgK6a6W4f
/*清除下拉表單的內(nèi)容*/
6n`%~ j,_RU0 function clearSelect(flag){關(guān)注ITC1z#B-a6g3f/u*_
if(flag=="c"){
I5c'e3n(|b0 var tmp = $("department");
)P$oa7G0AQ/o$cb0 while(tmp.childNodes.length>1){關(guān)注ITP(vJsB?XE"@
tmp.removeChild(tmp.lastChild);
ew)j^q0 }
0H+J,D R8i0 }else if(flag="d"){關(guān)注ITl UJS P)e _-W
var tmp = $("person");關(guān)注ITb-j-[&d&S }`[
while(tmp.childNodes.length>1){
h8iOK4e0 tmp.removeChild(tmp.lastChild);
qTBv)hZ#v:X{+n0 }關(guān)注ITJZ,P0_C
}關(guān)注IT`Tt5D({7P
}
y1ipi*J0 /*清空select里的內(nèi)容*/
})uTT-t"Y0 </script>關(guān)注ITc ^2Wf ]p%g
公司:<select id='company' nchange="show('c')"><option value="">======</option></select>關(guān)注ITLAD"Ei f8zo2uO
部門:<select id='department' nchange="show('d')"><option value="">======</option></select>
z/VjF&{({0 成員:<select id='person'><option value="">======</option></select>
j!IJ$dQ0 </body>
;R$n'W7L){ n*^P IE.tr0</html>關(guān)注ITT[$[*l;x9I] N
|
12:52:31,162 INFO Logger:51 - Logging using commons-logging.
12:52:31,287 INFO DWRServlet:51 - retrieved system configuration file: weblogic.utils.zip.SafeZipFileInputStream@2453319
12:52:31,334 INFO DefaultConfiguration:51 - Creator 'jsf' not loaded due to NoClassDefFoundError. This is only an problem if you wanted to use it. Cause: javax/faces/el/ValueBinding (jsf-api.jar)
12:52:31,349 INFO DefaultConfiguration:51 - Creator 'pageflow' not loaded due to ClassNotFoundException. This is only an problem if you wanted to use it. Cause: Beehive/Weblogic Creator not available. (可以不用理會)
12:52:31,349 INFO DefaultConfiguration:51 - Creator 'script' not loaded due to NoClassDefFoundError. This is only an problem if you wanted to use it. Cause: org/apache/bsf/BSFException (bsf-2.3.0.jar)
12:52:31,412 INFO DefaultConfiguration:51 - Converter 'jdom' not loaded due to NoClassDefFoundError. This is only an problem if you wanted to use it. Cause: org/jdom/Document (jdom-1.0.jar)
12:52:31,443 INFO DefaultConfiguration:51 - Converter 'hibernate' not loaded due to ClassNotFoundException. This is only an problem if you wanted to use it. Cause: Failed to find either org.hibernate.Hibernate or net.sf.hibernate.Hibernate (hibernate-3.0.1.jar ).
12:52:31,459 INFO DefaultConverterManager:51 - Type 'org.jdom.Document' is not convertable due to missing converter 'jdom'. This is only an problem if you wanted to use it.
12:52:31,459 INFO DefaultConverterManager:51 - Type 'org.jdom.Element' is not convertable due to missing converter 'jdom'. This is only an problem if you wanted to use it.
添加相應(yīng)的包,
http://www.findjar.com/jar/jdom/jars/jdom-1.0.jar.html
http://www.java2s.com/Code/Jar/Spring-Related/Downloadjsfapijar.htm
查找相應(yīng)的CLASS,下載包
13:20:43,131 WARN DefaultConverterManager:59 - Missing type info for save_yhsj(0<0>). Assuming this is a map with String keys. Please add to <signatures> in dwr.xml
13:20:43,131 WARN DefaultConverterManager:59 - Missing type info for save_yhsj(0<1>). Assuming this is a map with String keys. Please add to <signatures> in dwr.xml
13:20:43,146 INFO ExecuteQuery:51 - Exec[0]: FyglImpl.save_yhsj()
在頁面中:
function saveSjjl(){
var param=new Object();
param["S_nbxh"]=document.form1.S_nbxh.value;
param["S_yhmc"]=document.form2.S_yhmc.value;
param["D_cbsj"]=document.form2.D_cbsj.value;
param["S_rqsj"]=document.form2.S_rqsj.value;
param["S_cbry"]=document.form2.S_cbry.value;
FyglImpl.save_yhsj(param,{
callback:function(str) {
$('saveSjjl').disabled = true;
alert("保存成功!");
},
timeout:5000,
errorHandler:function(message) { alert("Oops: " + message); }
});
}
CLASS中:
public void save_yhsj(Map param) {}
解決方法:
<signatures>
<![CDATA[
import java.util.Map;
import com.fygl.implement.FyglImpl;
FyglImpl.save_yhsj(Map<String,String> param);
]]>
</signatures>
replace(replace(str,chr(13),''),chr(10),'')
update hz_qyfddbr h set jl=(select replace(replace(jl,chr(13),''),chr(10),'') from hz_qyfddbr r where r.nbxh=h.nbxh )
今天需要使用個本地化的問題,努力看了點資料,終于解決
COPE點資料來保存
用戶定義指令-使用@符合來調(diào)用
有兩種不同的類型:Macro(宏)和transform(傳遞器),Macro是在模板中使用macro指令定義,而transform是在模板外由程序定義(基本上都是基于Java的),這里通過Macro來介紹自定義指令。
例一:
<#macro greet>
<font size="+2">Hello Joe!</font>
</#macro>
使用:<@greet></@greet> 或 <@greet/>
結(jié)果:<font size="+2">Hello Joe!</font>
參數(shù)-在macro指令中可以在宏變量之后定義參數(shù)
例二:
<#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
使用:<@greet person="Fred"/> and <@greet person="Batman"/>
結(jié)果: <font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font>
macro可以有多個參數(shù),參數(shù)的次序是無關(guān)的,在macro指令中只能使用定義的參數(shù),并且必須對所有參數(shù)賦值,可以在定義參數(shù)時指定缺省值:
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
在自定義指令嵌套內(nèi)容:模板片斷中使用<#nested>指令
<#macro border>
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<#nested>
</tr></td></table>
</#macro>
使用:<@border>The bordered text</@border>
結(jié)果:
<table border=4 cellspacing=0 cellpadding=4>
<tr><td>The bordered text
</tr></td></table>
<#nested>指令可以被多次調(diào)用:
<#macro do_thrice>
<#nested>
<#nested>
<#nested>
</#macro>
使用:
<@do_thrice>Anything.</@do_thrice>
結(jié)果:
Anything.
Anything.
Anything.
注意:嵌套內(nèi)容是無法訪問到macro中的局部變量的。
例如:
<#macro repeat count>
<#local y = "test">
<#list 1..count as x>
${y} ${count}/${x}: <#nested>
</#list>
</#macro>
<@repeat count=3>${y?default("?")} ${x?default("?")} ${count?default("?")}</@repeat>
結(jié)果:
test 3/1: ? ? ?
test 3/2: ? ? ?
test 3/3: ? ? ?
下面是一個嵌套使用自定義指令的例子:
<@border>
<ul>
<@do_thrice>
<li><@greet person="Joe"/>
</@do_thrice>
</ul>
</@border>
結(jié)果:
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<ul>
<li><font size="+2">Hello Joe!</font>
<li><font size="+2">Hello Joe!</font>
<li><font size="+2">Hello Joe!</font>
</ul>
</tr></td></table>
在macro中使用循環(huán)變量-作為nested指令的參數(shù)傳遞循環(huán)變量的實際值,而在調(diào)用用戶定義指令時,在<@…>開始標(biāo)記的參數(shù)后面指定循環(huán)變量的名字:
<#macro repeat count>
<#list 1..count as x>
<#nested x, x/2, x==count>
</#list>
</#macro>
<@repeat count=4 ; c, halfc, last>
${c}. ${halfc}<#if last> Last!</#if>
/@repeat
結(jié)果:
1. 0.5
2. 1
3. 1.5
4. 2 Last!
注意:循環(huán)變量和用戶定義指令開始標(biāo)記指定的數(shù)目可以不同,調(diào)用時少指定循環(huán)變量,則多指定的值不可見,調(diào)用時多指定循環(huán)變量,多余的循環(huán)變量不會被創(chuàng)建。
模板中的變量,有三種類型:
1.) plain(全局)變量:可以在模板的任何地方訪問,包括使用include指令插入的模板,使用assign指令創(chuàng)建和替換
2.) 局部變量:在macro中有效,使用local指令創(chuàng)建和替換
3.) 循環(huán)變量:只能存在于指令的嵌套內(nèi)容,由指令(如list)自動創(chuàng)建;宏的參數(shù)是局部變量,而不是循環(huán)變量
用assign指令創(chuàng)建和替換的例子:
<#assign x = 1> <#-- create variable x -->
${x}
<#assign x = x + 3> <#-- replace variable x -->
${x}
結(jié)果:
1
4
局部變量隱藏(而不是覆蓋)同名的plain變量;循環(huán)變量隱藏同名的局部變量和plain變量,下面是一個例子:
<#assign x = "plain">
1. ${x} <#-- we see the plain var. here -->
<@test/>
6. ${x} <#-- the value of plain var. was not changed -->
<#list ["loop"] as x>
7. ${x} <#-- now the loop var. hides the plain var. -->
<#assign x = "plain2"> <#-- replace the plain var, hiding does not mater here -->
8. ${x} <#-- it still hides the plain var. -->
</#list>
9. ${x} <#-- the new value of plain var. -->
<#macro test>
2. ${x} <#-- we still see the plain var. here -->
<#local x = "local">
3. ${x} <#-- now the local var. hides it -->
<#list ["loop"] as x>
4. ${x} <#-- now the loop var. hides the local var. -->
</#list>
5. ${x} <#-- now we see the local var. again -->
</#macro>
結(jié)果:
1. plain
2. plain
3. local
4. loop
5. local
6. plain
7. loop
8. loop
9. plain2
內(nèi)部循環(huán)變量隱藏同名的外部循環(huán)變量,例如:
<#list ["loop 1"] as x>
${x}
<#list ["loop 2"] as x>
${x}
<#list ["loop 3"] as x>
${x}
</#list>
${x}
</#list>
${x}
</#list>
結(jié)果:
loop 1
loop 2
loop 3
loop 2
loop 1
模板中的變量會隱藏(而不是覆蓋)數(shù)據(jù)模型中同名變量,如果需要訪問數(shù)據(jù)模型中的同名變量,使用特殊變量global,下面的例子假設(shè)數(shù)據(jù)模型中的user的值是Big Joe:
<#assign user = "Joe Hider">
${user} <#-- prints: Joe Hider -->
${.globals.user} <#-- prints: Big Joe -->
命名(namespaces)空間-通常情況,只使用一個命名空間,稱為主命名空間(main namespace),但你是不會意識到這些的;為了創(chuàng)建可重用的macro、transforms或其它變量的集合(通常稱庫),必須使用多命名空間,為了防止同名沖突。
首先創(chuàng)建一個庫(假設(shè)保存在lib/my_test.ftl中):
<#macro copyright date>
<p>Copyright (C) ${date} Julia Smith. All rights reserved.
<br>Email: ${mail}</p>
</#macro>
<#assign mail = "jsmith@acme.com">
使用import指令導(dǎo)入庫到模板中,Freemarker會為導(dǎo)入的庫創(chuàng)建新的命名空間,并可以通過import指令中指定的hash(散列)變量訪問庫中的變量:
<#import "/lib/my_test.ftl" as my>
<#assign mail="fred@acme.com">
<@my.copyright date="1999-2002"/>
${my.mail}
${mail}
結(jié)果:
<p>Copyright (C) 1999-2002 Julia Smith. All rights reserved.
<br>Email: jsmith@acme.com</p>
jsmith@acme.com
fred@acme.com
上面的例子中使用的兩個同名變量并沒有沖突,因為它們位于不同的命名空間
可以使用assign指令在導(dǎo)入的命名空間中創(chuàng)建或替代變量:
<#import "/lib/my_test.ftl" as my>
${my.mail}
<#assign mail="jsmith@other.com" in my>
${my.mail}
結(jié)果:
jsmith@acme.com
jsmith@other.com
數(shù)據(jù)模型中的變量任何地方都可見,也包括不同的命名空間,下面修改了剛才創(chuàng)建的庫:
<#macro copyright date>
<p>Copyright (C) ${date} ${user}. All rights reserved.</p>
</#macro>
<#assign mail = "${user}@acme.com">
假設(shè)數(shù)據(jù)模型中的user變量的值是Fred:
<#import "/lib/my_test.ftl" as my>
<@my.copyright date="1999-2002"/>
${my.mail}
結(jié)果:
<p>Copyright (C) 1999-2002 Fred. All rights reserved.</p>
Fred@acme.com
最后用macro指令解決問題,
<#macro zch code text="dd">
<#include "/view/xtgl/xtsjwh/zchsz${ThemeHelpersMap[code]?default(text)}.js">
</#macro>
<@zch code="jc"/>
10:05:05,937 INFO QyFunctionImpl:16 - Update xhgl set xh=69 where table_name='sl_yhzcnr'
10:05:05,984 INFO XmlBeanDefinitionReader:158 - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
10:05:06,000 INFO SQLErrorCodesFactory:120 - SQLErrorCodes loaded: [DB2, HSQL, MS-SQL, MySQL, Oracle, Informix, PostgreSQL, Sybase]
10:05:06,046 ERROR DispatcherServlet:412 - Could not complete request
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [ Update xhgl set xh=69 where table_name='sl_yhzcnr' ]; SQL state [S1009]; error code [0]; Connection is read-only. Queries leading to data modification are not allowed.; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
at com.mysql.jdbc.SQLError.createSQLException(Ljava.lang.String;Ljava.lang.String;)Ljava.sql.SQLException;(SQLError.java:910)
at com.mysql.jdbc.Statement.executeUpdate(Ljava.lang.String;Z)I(Statement.java:1265)
at com.mysql.jdbc.Statement.executeUpdate(Ljava.lang.String;)I(Statement.java:1235)
at weblogic.jdbc.wrapper.Statement.executeUpdate(Ljava.lang.String;)I(Statement.java:360)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(Ljava.sql.Statement;)Ljava.lang.Object;(JdbcTemplate.java:381)
at org.springframework.jdbc.core.JdbcTemplate.execute(Lorg.springframework.jdbc.core.StatementCallback;)Ljava.lang.Object;(JdbcTemplate.java:254)
at org.springframework.jdbc.core.JdbcTemplate.update(Ljava.lang.String;)I(JdbcTemplate.java:391)
at com.yhgl.implement.QyFunctionImpl.getXh(Ljava.lang.String;)Ljava.lang.String;(QyFunctionImpl.java:17)
at com.yhgl.implement.QyFunctionImpl$$FastClassByCGLIB$$86b27578.invoke(ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(<generated>:0)
at net.sf.cglib.proxy.MethodProxy.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint()Ljava.lang.Object;(Cglib2AopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava.lang.Object;(ReflectiveMethodInvocation.java:122)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Lorg.aopalliance.intercept.MethodInvocation;)Ljava.lang.Object;(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava.lang.Object;(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Ljava.lang.Object;Ljava.lang.reflect.Method;[Ljava.lang.Object;Lnet.sf.cglib.proxy.MethodProxy;)Ljava.lang.Object;(Cglib2AopProxy.java:643)
at com.yhgl.implement.QyFunctionImpl$$EnhancerByCGLIB$$abfcb417.getXh(Ljava.lang.String;)Ljava.lang.String;(<generated>:0)
at com.contorller.Yhdjcontroller.save_nr(Ljavax.servlet.http.HttpServletRequest;Lorg.springframework.web.servlet.ModelAndView;)Ljava.lang.String;(Yhdjcontroller.java:79)
at com.contorller.Yhdjcontroller.save(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(Yhdjcontroller.java:51)
at jrockit.reflect.NativeMethodInvoker.invoke0(Ljava.lang.Object;ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(Ljava.lang.String;Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(MultiActionController.java:403)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(MultiActionController.java:358)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(AbstractController.java:139)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;Ljava.lang.Object;)Lorg.springframework.web.servlet.ModelAndView;(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(DispatcherServlet.java:684)
at org.springframework.web.servlet.DispatcherServlet.doService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(DispatcherServlet.java:625)
at org.springframework.web.servlet.FrameworkServlet.processRequest(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(FrameworkServlet.java:392)
at org.springframework.web.servlet.FrameworkServlet.doPost(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(FrameworkServlet.java:357)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(HttpServlet.java:853)
<2008-8-21 上午10時05分06秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=36466092,name=SpringMVC,context-path=/SpringMVC)] Servlet failed with Exception
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [ Update xhgl set xh=69 where table_name='sl_yhzcnr' ]; SQL state [S1009]; error code [0]; Connection is read-only. Queries leading to data modification are not allowed.; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
at com.mysql.jdbc.SQLError.createSQLException(Ljava.lang.String;Ljava.lang.String;)Ljava.sql.SQLException;(SQLError.java:910)
at com.mysql.jdbc.Statement.executeUpdate(Ljava.lang.String;Z)I(Statement.java:1265)
at com.mysql.jdbc.Statement.executeUpdate(Ljava.lang.String;)I(Statement.java:1235)
at weblogic.jdbc.wrapper.Statement.executeUpdate(Ljava.lang.String;)I(Statement.java:360)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(Ljava.sql.Statement;)Ljava.lang.Object;(JdbcTemplate.java:381)
at org.springframework.jdbc.core.JdbcTemplate.execute(Lorg.springframework.jdbc.core.StatementCallback;)Ljava.lang.Object;(JdbcTemplate.java:254)
at org.springframework.jdbc.core.JdbcTemplate.update(Ljava.lang.String;)I(JdbcTemplate.java:391)
at com.yhgl.implement.QyFunctionImpl.getXh(Ljava.lang.String;)Ljava.lang.String;(QyFunctionImpl.java:17)
at com.yhgl.implement.QyFunctionImpl$$FastClassByCGLIB$$86b27578.invoke(ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(<generated>:0)
at net.sf.cglib.proxy.MethodProxy.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint()Ljava.lang.Object;(Cglib2AopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava.lang.Object;(ReflectiveMethodInvocation.java:122)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Lorg.aopalliance.intercept.MethodInvocation;)Ljava.lang.Object;(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava.lang.Object;(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Ljava.lang.Object;Ljava.lang.reflect.Method;[Ljava.lang.Object;Lnet.sf.cglib.proxy.MethodProxy;)Ljava.lang.Object;(Cglib2AopProxy.java:643)
at com.yhgl.implement.QyFunctionImpl$$EnhancerByCGLIB$$abfcb417.getXh(Ljava.lang.String;)Ljava.lang.String;(<generated>:0)
at com.contorller.Yhdjcontroller.save_nr(Ljavax.servlet.http.HttpServletRequest;Lorg.springframework.web.servlet.ModelAndView;)Ljava.lang.String;(Yhdjcontroller.java:79)
at com.contorller.Yhdjcontroller.save(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(Yhdjcontroller.java:51)
at jrockit.reflect.NativeMethodInvoker.invoke0(Ljava.lang.Object;ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(Ljava.lang.String;Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(MultiActionController.java:403)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(MultiActionController.java:358)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)Lorg.springframework.web.servlet.ModelAndView;(AbstractController.java:139)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;Ljava.lang.Object;)Lorg.springframework.web.servlet.ModelAndView;(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(DispatcherServlet.java:684)
at org.springframework.web.servlet.DispatcherServlet.doService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(DispatcherServlet.java:625)
at org.springframework.web.servlet.FrameworkServlet.processRequest(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(FrameworkServlet.java:392)
at org.springframework.web.servlet.FrameworkServlet.doPost(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(FrameworkServlet.java:357)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(HttpServlet.java:853)
>
<bean id="baseTxService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="proxyTargetClass" value="true" />
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
對于每個類型擁有的值范圍以及并且指定日期何時間值的有效格式的描述見7.3.6 日期和時間類型。
這里是一個使用日期函數(shù)的例子。下面的查詢選擇了所有記錄,其date_col的值是在最后30天以內(nèi):
mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) select DAYOFWEEK('1998-02-03');
-> 3
WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
mysql> select WEEKDAY('1997-11-05');
-> 2
DAYOFMONTH(date)
返回date的月份中日期,在1到31范圍內(nèi)。
mysql> select DAYOFMONTH('1998-02-03');
-> 3
DAYOFYEAR(date)
返回date在一年中的日數(shù), 在1到366范圍內(nèi)。
mysql> select DAYOFYEAR('1998-02-03');
-> 34
MONTH(date)
返回date的月份,范圍1到12。
mysql> select MONTH('1998-02-03');
-> 2
DAYNAME(date)
返回date的星期名字。
mysql> select DAYNAME("1998-02-05");
-> 'Thursday'
MONTHNAME(date)
返回date的月份名字。
mysql> select MONTHNAME("1998-02-05");
-> 'February'
QUARTER(date)
返回date一年中的季度,范圍1到4。
mysql> select QUARTER('98-04-01');
-> 2
WEEK(date)
WEEK(date,first)
對于星期天是一周的第一天的地方,有一個單個參數(shù),返回date的周數(shù),范圍在0到52。2個參數(shù)形式WEEK()允許
你指定星期是否開始于星期天或星期一。如果第二個參數(shù)是0,星期從星期天開始,如果第二個參數(shù)是1,
從星期一開始。
mysql> select WEEK('1998-02-20');
-> 7
mysql> select WEEK('1998-02-20',0);
-> 7
mysql> select WEEK('1998-02-20',1);
-> 8
YEAR(date)
返回date的年份,范圍在1000到9999。
mysql> select YEAR('98-02-03');
-> 1998
HOUR(time)
返回time的小時,范圍是0到23。
mysql> select HOUR('10:05:03');
-> 10
MINUTE(time)
返回time的分鐘,范圍是0到59。
mysql> select MINUTE('98-02-03 10:05:03');
-> 5
SECOND(time)
回來time的秒數(shù),范圍是0到59。
mysql> select SECOND('10:05:03');
-> 3
PERIOD_ADD(P,N)
增加N個月到階段P(以格式Y(jié)YMM或YYYYMM)。以格式Y(jié)YYYMM返回值。注意階段參數(shù)P不是日期值。
mysql> select PERIOD_ADD(9801,2);
-> 199803
PERIOD_DIFF(P1,P2)
返回在時期P1和P2之間月數(shù),P1和P2應(yīng)該以格式Y(jié)YMM或YYYYMM。注意,時期參數(shù)P1和P2不是日期值。
mysql> select PERIOD_DIFF(9802,199703);
-> 11
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
這些功能執(zhí)行日期運算。對于MySQL 3.22,他們是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞。
在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(見例子)date是一個指定開始日期的
DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個表達(dá)式,expr是一個字符串;它可以以
一個“-”開始表示負(fù)間隔。type是一個關(guān)鍵詞,指明表達(dá)式應(yīng)該如何被解釋。EXTRACT(type FROM date)函數(shù)從日期
中返回“type”間隔。下表顯示了type和expr參數(shù)怎樣被關(guān)聯(lián): type值 含義 期望的expr格式
SECOND 秒 SECONDS
MINUTE 分鐘 MINUTES
HOUR 時間 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES"
DAY_HOUR 天和小時 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"
MySQL在expr格式中允許任何標(biāo)點分隔符。表示顯示的是建議的分隔符。如果date參數(shù)是一個DATE值并且你的計算僅僅
包含YEAR、MONTH和DAY部分(即,沒有時間部分),結(jié)果是一個DATE值。否則結(jié)果是一個DATETIME值。
mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
-> 1998-01-01
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL 1 DAY);
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL "1:1" MINUTE_SECOND);
-> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
INTERVAL "1 1:1:1" DAY_SECOND);
-> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
-> 20102
如果你指定太短的間隔值(不包括type關(guān)鍵詞期望的間隔部分),MySQL假設(shè)你省掉了間隔值的最左面部分。例如,
如果你指定一個type是DAY_SECOND,值expr被希望有天、小時、分鐘和秒部分。如果你象"1:10"這樣指定值,
MySQL假設(shè)日子和小時部分是丟失的并且值代表分鐘和秒。換句話說,"1:10" DAY_SECOND以它等價于"1:10" MINUTE_SECOND
的方式解釋,這對那MySQL解釋TIME值表示經(jīng)過的時間而非作為一天的時間的方式有二義性。如果你使用確實不正確的日期,
結(jié)果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且結(jié)果日期大于新月份的最大值天數(shù),日子在新月用最大的天調(diào)整。
mysql> select DATE_ADD('1998-01-30', Interval 1 month);
-> 1998-02-28
注意,從前面的例子中詞INTERVAL和type關(guān)鍵詞不是區(qū)分大小寫的。
TO_DAYS(date)
給出一個日期date,返回一個天數(shù)(從0年的天數(shù))。
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS('1997-10-07');
-> 729669
TO_DAYS()不打算用于使用格列高里歷(1582)出現(xiàn)前的值。
FROM_DAYS(N)
給出一個天數(shù)N,返回一個DATE值。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
TO_DAYS()不打算用于使用格列高里歷(1582)出現(xiàn)前的值。
DATE_FORMAT(date,format)
根據(jù)format字符串格式化date值。下列修飾符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數(shù)字, 4 位
%y 年, 數(shù)字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數(shù), 數(shù)字(00……31)
%e 月份中的天數(shù), 數(shù)字(0……31)
%m 月, 數(shù)字(01……12)
%c 月, 數(shù)字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(shù)(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數(shù)字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(shù)(0=Sunday ……6=Saturday )
%U 星期(0……52), 這里星期天是星期的第一天
%u 星期(0……52), 這里星期一是星期的第一天
%% 一個文字“%”。
所有的其他字符不做解釋被復(fù)制到結(jié)果中。
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
MySQL3.23中,在格式修飾符字符前需要%。在MySQL更早的版本中,%是可選的。
TIME_FORMAT(time,format)
這象上面的DATE_FORMAT()函數(shù)一樣使用,但是format字符串只能包含處理小時、分鐘和秒的那些格式修飾符。
其他修飾符產(chǎn)生一個NULL值或0。
CURDATE()
CURRENT_DATE
以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取決于函數(shù)是在一個字符串還是數(shù)字上下文被使用。
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() + 0;
-> 19971215
CURTIME()
CURRENT_TIME
以'HH:MM:SS'或HHMMSS格式返回當(dāng)前時間值,取決于函數(shù)是在一個字符串還是在數(shù)字的上下文被使用。
mysql> select CURTIME();
-> '23:50:26'
mysql> select CURTIME() + 0;
-> 235026
NOW()
SYSDATE()
CURRENT_TIMESTAMP
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回當(dāng)前的日期和時間,取決于函數(shù)是在一個字符串還是在數(shù)字的
上下文被使用。
mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
-> 19971215235026
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
如果沒有參數(shù)調(diào)用,返回一個Unix時間戳記(從'1970-01-01 00:00:00'GMT開始的秒數(shù))。如果UNIX_TIMESTAMP()用一
個date參數(shù)被調(diào)用,它返回從'1970-01-01 00:00:00' GMT開始的秒數(shù)值。date可以是一個DATE字符串、一個DATETIME
字符串、一個TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地時間的一個數(shù)字。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
當(dāng)UNIX_TIMESTAMP被用于一個TIMESTAMP列,函數(shù)將直接接受值,沒有隱含的“string-to-unix-timestamp”變換。
FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp參數(shù)所表示的值,取決于函數(shù)是在一個字符串
還是或數(shù)字上下文中被使用。
mysql> select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 時間標(biāo)記的一個字符串,根據(jù)format字符串格式化。format可以包含與DATE_FORMAT()函數(shù)列出的條
目同樣的修飾符。
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
-> '1997 23rd December 03:43:30 x'
SEC_TO_TIME(seconds)
返回seconds參數(shù),變換成小時、分鐘和秒,值以'HH:MM:SS'或HHMMSS格式化,取決于函數(shù)是在一個字符串還是在數(shù)字
上下文中被使用。
mysql> select SEC_TO_TIME(2378);
-> '00:39:38'
mysql> select SEC_TO_TIME(2378) + 0;
-> 3938
TIME_TO_SEC(time)
返回time參數(shù),轉(zhuǎn)換成秒。
mysql> select TIME_TO_SEC('22:23:00');
-> 80580
mysql> select TIME_TO_SEC('00:39:38');
-> 2378
---------------------------------------------------------------------------------------------------------------------------
mysql日期處理函數(shù)
mysql日期處理函數(shù)
mysql自己有格式化日期格式的函數(shù),可以在查詢語句中使用
DATE_FORMAT(date,format)
根據(jù)format字符串格式化date值。下列修飾符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 數(shù)字, 4 位
%y 年, 數(shù)字, 2 位
%a 縮寫的星期名字(Sun……Sat)
%d 月份中的天數(shù), 數(shù)字(00……31)
%e 月份中的天數(shù), 數(shù)字(0……31)
%m 月, 數(shù)字(01……12)
%c 月, 數(shù)字(1……12)
%b 縮寫的月份名字(Jan……Dec)
%j 一年中的天數(shù)(001……366)
%H 小時(00……23)
%k 小時(0……23)
%h 小時(01……12)
%I 小時(01……12)
%l 小時(1……12)
%i 分鐘, 數(shù)字(00……59)
%r 時間,12 小時(hh:mm:ss [AP]M)
%T 時間,24 小時(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一個星期中的天數(shù)(0=Sunday ……6=Saturday )
%U 星期(0……52), 這里星期天是星期的第一天
%u 星期(0……52), 這里星期一是星期的第一天
%% 一個文字“%”。
如需要用php處理,可先用strtotime函數(shù)將日期轉(zhuǎn)換為unix時間戳,再用date函數(shù)格式化
對于Weblogic8.1可直接修改eauser_projectsdomainsmydomain下的startweblogic.cmd
找到 “Set classpath=”,加入mysql.jar的路徑,如:
set CLASSPATH=C:mysql.jar;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%jrelib t.jar;%WL_HOME%serverlibwebservices.jar;%CLASSPATH%
mysql.jar的路徑最好放在最前面。
當(dāng)weblogic合成在myeclipse中的時候,在myeclipse的weblogic的classpath中設(shè)置驅(qū)動的路徑
1)控制臺報The WebLogic Server did not start up properly.
java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848
錯誤原因及解決辦法:MBeanAttributeInfo的serialVersionUID的版本控制id不一樣,說明是使用這個被使用的bean被修改過了,很顯然是版本不對;修改startWebLogic.cmd文件,設(shè)置set JAVA_HOME=D:\bea\jdk141_05,使其指向weblogic自帶的jdk;重啟startWebLogic.cmd問題消失。
2)錯誤報Deployment descriptor "web.xml" is malform
ed. Check against the DTD: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find
錯誤原因及解決辦法:解析web.xml出現(xiàn)問題,修改OPEN_CMS\webapp\WEB-INF\web.xml文件;在該文件的 最上面添加如下內(nèi)容:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
重新啟動錯誤消失。
3)錯誤為Deployment descriptor "/WEB-INF/
web.xml" is malformed. Check against the DTD: The content of element type "t
ag" must match "(name,tag-class,tei-class?,body-content?,display-name?,small-ico
n?,large-icon?,description?,variable*,attribute*,example?)". (line 40, column 11
).>
錯誤原因及解決辦法:由于weblogic8在解析xml文件時,對xml文件的內(nèi)容格式要求特別嚴(yán)格;必須按照xml格式的要求
及排列順序,所以必須重新組織其內(nèi)容,一定嚴(yán)格要注意順序,如 <servlet>就不能放在<servlet-mapping>后面。
4)錯誤java.lang.SecurityException: Prohibited package name: java.lang
錯誤原因及解決辦法:訪問包可視的方法或變量錯誤;這個錯誤恨少見,一直沒有想明白其中緣由;后來只能采用直接引用jar文件的法子解決該問題;
i)利用opencms自帶的build.xml文件,運行ant jar命令;生成opencms.jar和webdav.jar兩個文件
ii)在startWebLogic.cmd添加如下內(nèi)容,引進(jìn)上面的2個jar文件
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\opencms.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\webdav.jar
大家有興趣的可以參考《透視JAVA——反編譯、修補(bǔ)和逆向工程技術(shù)》這本書的$4.2章的內(nèi)容,如果找到更好的解決方法也請來信告知,謝謝~_~
5)其它注意事項,在eclipse下最好采用和運行weblogic一樣的jdk版本進(jìn)行編譯,否則會出現(xiàn)文件訪問版本不一致的bug
|