#
借windows7系统的风光。我这几天也开始玩win7,笔记本系统我都重装了5-6次了,考虑到win7还不成熟、我又比较喜欢win7,所以考虑使用装双系统XP+WIN7,花了2个小时将XP、WIN7重新全部安装,打好补丁,升级,将自己常用的软件都安装上
工作原因需要安装ORACLE,考虑双系统中都安装ORACLE,系统切换之间数据的使用也需要一起切换,考虑XP和WIN7都安装ORACLE软件,公用一个数据库文件。经过几个小时的奋战,终于完成预期的目标。
首先是双系统的安装中需要注意的,2个系统的机器名必须一样。否则再同步的时候会出现错误,这种错误也都是能再装完之后解决,所以,机器名不一样也可以,就是后面麻烦下而已。
系统硬盘规划如下:(硬盘320G分区买来就是分的4个区,本人懒惰,也就懒得再去分小了、因安装的是双系统的原因,C盘和D盘再显示上会根据登陆的系统而变化、最后2个分区则不变化,所以将公用数据文件安装再DISK1盘)
首先我在XP系统的系统盘上只安装10.2.0.1.0数据库软件。
然后再单独创建数据库(单独创建的数据库文件位置存放再DISK1中如:oradb)。
建立监听、配置本地NET服务名。
一切完好之后再使用升级补丁,将Oracle升级至10.2.0.3.0,升级时间大约30分钟,根据电脑性能时间会有变化。
然后再切换至WIN7系统中同样的方法安装Oracle,因为WIN7系统的oracle版本使用的是for vista 版本。版本号为10.2.0.3.0,无需升级。
WIN7系统的系统盘上只安装10.2.0.3.0数据库软件。。
然后再单独创建数据库(单独创建的数据库文件位置同样存放再DISK1中如:oradb,覆盖掉再XP系统中ORACLE创建的数据库文件)。
然后回到切换至XP系统,将WIN7系统中ORACLE目录oracle"product"10.2.0"db_1"database下的SPFILEORCL.ORA复制到XP系统中oracle同级
目录下SPFILEORCL.ORA覆盖掉。启动数据库会出现ORA-00201 ,ORA-00202错误,解决方法如下:
进入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
检查运行,完成后创建表空间等信息、完成后返回WIN7系统,即可同步操作数据。此方法是双击冷备的思想。
在pl/sql里怎样进行半,全角转换?
To_Multi_Byte(str)
To_Single_Byte(str)
转http://www.gzit.org/27/viewspace-3306.html
package com;
import java.util.ArrayList;关注ITz]'p6g5n-KlX
import java.util.List;
public class SimpleTest{关注IT1rq3XJw8K.uk&fK$w
关注IT IQvF'S3U
/**
ZyJ9l2@9@K0 *关注IT)~d3X(v*^ \jn3M
* @return 所有公司
t8~)^.L.kq9Y0 */关注IT_ s9A?i:^Z
public List<Company> getAllCompany(){
`Gq(c rzCG0 List<Company> list = new ArrayList<Company>();关注ITyc?n#P3H
Company company = null;关注ITm n"o@a%vF#p8O
company = new Company(1,"广西博联信息通信技术有限责任公司");关注IT7p9wloKHs
list.add(company);
\t%? EgoZ/Jl3FI6r0 company = new Company(2,"能创信息科技有限责任公司");关注IT:kA E+Kh#UI
list.add(company);
@"E}.U0t,V1I0 return list;关注IT9l#W*{"s&m
}
!l0{"PF/z&y R9a.o/y0
Ue3t N0^q%v.E0 /**
)^ D*FpTn+a5I!e0 *关注IT[1r^3g"Q,Ih
* @param companyId 公司编号
-aWE)@QP&?}0 * @return 公司下所有部门
@4M,|PVgn!H L0 */关注IT0ZGrm:b'?
public List<Department> getDepartment(int companyId){
W(o&TK Is0hC0 List<Department> list = new ArrayList<Department>();关注IT4V0v(t)v1J.TM,m.y
Department department = null;
Wvc(d"g4D eV2A0 if(companyId==1){关注IT]$Z$X*W*mv8`%qQ
department = new Department(1,1,"软件事业部");关注IT]!A F)AV\$I5J
list.add(department);关注ITIYRRcSj
department = new Department(2,1,"工程部");关注ITU rCpeq8M
list.add(department);
5O#{ `8v8Ta)}B$L0 }else{关注IT ug,L?5[:y@k C:]
department = new Department(1,2,"企管部");关注ITk/BY3iM/X,`%e
list.add(department);关注IT&I7Z9{5`kV/l Avj |5L
department = new Department(2,2,"财务部");
b'jm;yVa'Ww;Ea0 list.add(department);
z W Pp$yx3M0 }关注ITG gA3V5t0^ xM
return list;
4O v#k$x:P3n0 }关注IT$tV5JN8sF u:FJ
y'b-^Bma0 /**关注IT/A(^g]jU P*u-\,H
*关注IT:m'| NmVWtX/Y
* @param departmentId 部门编号关注IT} l)^8GbA
* @return 部门下所有员工关注IT.^VB |7V;b D'J'eH+n
*/
2gkge \x/ip-c4tW0 public List<Person> getPerson(int departmentId){关注ITFR*B5bnj_2[&Q
List<Person> list = new ArrayList<Person>();
A@T5y8M]:H5h/c0 Person person = null;关注ITK Z-M ~MF
if(departmentId==1){关注IT\t.T\3Mx
person = new Person(1,1,"张三");关注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,"王五");关注ITi'j*FST I
list.add(person);关注IT^@j { x US i
person = new Person(2,2,"赵六");关注IT ux#kse o;W
list.add(person);
4B/cP*v5z [P0 }关注IT g Bc!D)p*jB)X
return list;关注IT'X:[] lH
}
}
d z-]6Gn/T9f1OR0
|
package com;
public class Company {
private int id;关注IT|:NQQ,|8W,D!QV
private String companyName;
$ffG s&X1|I0 关注ITy*eK ~4xog
public Company(int id,String companyName){
.q;k2a&}j*LL0 this.id = id;
'\ u:Jpv)j0 this.companyName = companyName;关注ITV[,Ty8Fu
}
public int getId() {关注IT:F| |n-n!w$sX5PL
return id;
NPPJ,?0 }
public void setId(int id) {关注ITh2emjTe il+[D
this.id = id;
W@b ` L4i0 }
public String getCompanyName() {关注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;关注IT [n0zYU
private int companyId;关注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;关注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) {关注ITlQ1r8wS5_'hb
this.id = id;关注IT pGy3Jl{0tkW
}
public int getCompanyId() {
@!PpRi0 return companyId;关注ITs c!i"DQ5_D
}
public void setCompanyId(int companyId) {关注ITrp` i5D/_L
this.companyId = companyId;关注ITYT+Y6CkJ t2x
}
public String getDepartmentName() {
fSa p.@9e&L0 return departmentName;关注IT!Pe L6m D7n wM
}
public void setDepartmentName(String departmentName) {关注IT/bD(o/RPq
this.departmentName = departmentName;
'|S4q p4]0 }
}关注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) {关注IT#c%qN s2Xup kIc
this.id = id;关注ITs%z&uZ2T Bbj
this.departmentId = departmentId;
|5nI&y.LO y)Cx(C.r b"x0 this.userName = userName;关注IT_,ep*n(H
}
public int getDepartmentId() {关注IT&ue1rG X%WJN[
return departmentId;
"qn%DVY2mGh0 }
public void setDepartmentId(int departmentId) {关注ITa? d(_7s
this.departmentId = departmentId;关注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"?>关注ITWF0A~V
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "dwr10.dtd" >关注IT GszT,f+Fc:RT
<dwr>
P/QC qq)cf0 <allow>关注IT.M%D9A4u{A&^`
<!-- 声明哪个类可以提供JS直接调用 -->
Nf9r/PN%N-Du)D0 <create javascript="SimpleTest" creator="new">关注IT'T G m*[5A\#|1~;`%Y
<param name="class" value="com.SimpleTest"></param>
\u)NR5z5QSP7t&@0 <!-- 该类里公开出来给JS调用的方法 -->
sh+c`K#sL'T#l0 <include method="getAllCompany" />关注IT$|i'^(lf$`y[2x I
<include method="getDepartment" />
cP(^2LF5c:K$s*ce0 <include method="getPerson" />
_/J0?wiqL%w0 </create>
/zms8Vonw0 <!-- 类型转换 -->关注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">关注IT.g SgkS'u S]`
<param name="include" value="id,companyId,departmentName"></param>关注ITX~_L nT
</convert>
p3G!a/V;|y0 <convert match="com.Company" converter="bean">关注IT W6L q.dtp%Qv\
<param name="include" value="id,companyName"></param>
z+sas-D)C"PS,|0 </convert>关注ITD/g|U2c:Y
</allow>关注IT"['f&XZ`~
</dwr>关注IT,FruT'[ m%A1M
|
<%@ page language="java" pageEncoding="GB18030"%>关注IT*B&kW!{i
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
lgX^J G0<html>关注ITi'l*l#zG(q
<head>
uLA#O!~1s:c@0 <title>My JSP 'simpleTest.jsp' starting page</title>
eI-k1b-TDW w0 关注IT7g h.ICd(r
<meta. http-equiv="pragma" content="no-cache">关注ITQ _-x5Mm
<meta. http-equiv="cache-control" content="no-cache">关注ITe}yN |"S
<meta. http-equiv="expires" content="0"> 关注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>关注IT1r"V3R{cP/~3Jc7Q
<script. type="text/javascript" src="dwr/util.js"></script>关注IT#bM"@K,O@ X
<script. type="text/javascript" src="dwr/interface/SimpleTest.js"></script>关注ITi(V6w \6~!l/a A#s [
6_*@k$wN0 <body nload="initial()">关注IT!nt9lT`1e/M%h
<script. type="text/javascript">
y]#zLJE0 /*页面初始加载公司栏目*/关注IT?%]%wR7ICTg0_
function initial(){
'h&BHt iEU0 SimpleTest.getAllCompany(function(data){dealSelect("i",data)});关注ITjty,Fwrb
}关注IT&I!\_N d4xYHd
/*获取下拉菜单的值并填充下一栏目*/
w)UR!qK$ma0 function show(flag){关注IT(y4Ff L4U5i
if(flag=="c"){关注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 }关注ITk @#n[[&L&_OP5]4_o
/*填充select的内容*/
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");关注IT(I'Syg7[g[ l+R5r"l
}else if(flag=="i"){
d'X'Fj5JJQ!Z8~0 DWRUtil.addOptions("company",data,"id","companyName");关注IT R W8[| x9a1QFq
}
~m+hRysQ P T,c)?a0@0 }关注IT!e6B&wgK6a6W4f
/*清除下拉表单的内容*/
6n`%~ j,_RU0 function clearSelect(flag){关注ITC1z#B-a6g3f/u*_
if(flag=="c"){
I5c'e3n(|b0 var tmp = $("department");
)P$oa7G0AQ/o$cb0 while(tmp.childNodes.length>1){关注ITP(vJsB?XE"@
tmp.removeChild(tmp.lastChild);
ew)j^q0 }
0H+J,D R8i0 }else if(flag="d"){关注ITl UJS P)e _-W
var tmp = $("person");关注ITb-j-[&d&S }`[
while(tmp.childNodes.length>1){
h8iOK4e0 tmp.removeChild(tmp.lastChild);
qTBv)hZ#v:X{+n0 }关注ITJZ,P0_C
}关注IT`Tt5D({7P
}
y1ipi*J0 /*清空select里的内容*/
})uTT-t"Y0 </script>关注ITc ^2Wf ]p%g
公司:<select id='company' nchange="show('c')"><option value="">======</option></select>关注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>关注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.
添加相应的包,
http://www.findjar.com/jar/jdom/jars/jdom-1.0.jar.html
http://www.java2s.com/Code/Jar/Spring-Related/Downloadjsfapijar.htm
查找相应的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点资料来保存
用户定义指令-使用@符合来调用
有两种不同的类型:Macro(宏)和transform(传递器),Macro是在模板中使用macro指令定义,而transform是在模板外由程序定义(基本上都是基于Java的),这里通过Macro来介绍自定义指令。
例一:
<#macro greet>
<font size="+2">Hello Joe!</font>
</#macro>
使用:<@greet></@greet> 或 <@greet/>
结果:<font size="+2">Hello Joe!</font>
参数-在macro指令中可以在宏变量之后定义参数
例二:
<#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
使用:<@greet person="Fred"/> and <@greet person="Batman"/>
结果: <font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font>
macro可以有多个参数,参数的次序是无关的,在macro指令中只能使用定义的参数,并且必须对所有参数赋值,可以在定义参数时指定缺省值:
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
在自定义指令嵌套内容:模板片断中使用<#nested>指令
<#macro border>
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<#nested>
</tr></td></table>
</#macro>
使用:<@border>The bordered text</@border>
结果:
<table border=4 cellspacing=0 cellpadding=4>
<tr><td>The bordered text
</tr></td></table>
<#nested>指令可以被多次调用:
<#macro do_thrice>
<#nested>
<#nested>
<#nested>
</#macro>
使用:
<@do_thrice>Anything.</@do_thrice>
结果:
Anything.
Anything.
Anything.
注意:嵌套内容是无法访问到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>
结果:
test 3/1: ? ? ?
test 3/2: ? ? ?
test 3/3: ? ? ?
下面是一个嵌套使用自定义指令的例子:
<@border>
<ul>
<@do_thrice>
<li><@greet person="Joe"/>
</@do_thrice>
</ul>
</@border>
结果:
<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中使用循环变量-作为nested指令的参数传递循环变量的实际值,而在调用用户定义指令时,在<@…>开始标记的参数后面指定循环变量的名字:
<#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
结果:
1. 0.5
2. 1
3. 1.5
4. 2 Last!
注意:循环变量和用户定义指令开始标记指定的数目可以不同,调用时少指定循环变量,则多指定的值不可见,调用时多指定循环变量,多余的循环变量不会被创建。
模板中的变量,有三种类型:
1.) plain(全局)变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换
2.) 局部变量:在macro中有效,使用local指令创建和替换
3.) 循环变量:只能存在于指令的嵌套内容,由指令(如list)自动创建;宏的参数是局部变量,而不是循环变量
用assign指令创建和替换的例子:
<#assign x = 1> <#-- create variable x -->
${x}
<#assign x = x + 3> <#-- replace variable x -->
${x}
结果:
1
4
局部变量隐藏(而不是覆盖)同名的plain变量;循环变量隐藏同名的局部变量和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>
结果:
1. plain
2. plain
3. local
4. loop
5. local
6. plain
7. loop
8. loop
9. plain2
内部循环变量隐藏同名的外部循环变量,例如:
<#list ["loop 1"] as x>
${x}
<#list ["loop 2"] as x>
${x}
<#list ["loop 3"] as x>
${x}
</#list>
${x}
</#list>
${x}
</#list>
结果:
loop 1
loop 2
loop 3
loop 2
loop 1
模板中的变量会隐藏(而不是覆盖)数据模型中同名变量,如果需要访问数据模型中的同名变量,使用特殊变量global,下面的例子假设数据模型中的user的值是Big Joe:
<#assign user = "Joe Hider">
${user} <#-- prints: Joe Hider -->
${.globals.user} <#-- prints: Big Joe -->
命名(namespaces)空间-通常情况,只使用一个命名空间,称为主命名空间(main namespace),但你是不会意识到这些的;为了创建可重用的macro、transforms或其它变量的集合(通常称库),必须使用多命名空间,为了防止同名冲突。
首先创建一个库(假设保存在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指令导入库到模板中,Freemarker会为导入的库创建新的命名空间,并可以通过import指令中指定的hash(散列)变量访问库中的变量:
<#import "/lib/my_test.ftl" as my>
<#assign mail="fred@acme.com">
<@my.copyright date="1999-2002"/>
${my.mail}
${mail}
结果:
<p>Copyright (C) 1999-2002 Julia Smith. All rights reserved.
<br>Email: jsmith@acme.com</p>
jsmith@acme.com
fred@acme.com
上面的例子中使用的两个同名变量并没有冲突,因为它们位于不同的命名空间
可以使用assign指令在导入的命名空间中创建或替代变量:
<#import "/lib/my_test.ftl" as my>
${my.mail}
<#assign mail="jsmith@other.com" in my>
${my.mail}
结果:
jsmith@acme.com
jsmith@other.com
数据模型中的变量任何地方都可见,也包括不同的命名空间,下面修改了刚才创建的库:
<#macro copyright date>
<p>Copyright (C) ${date} ${user}. All rights reserved.</p>
</#macro>
<#assign mail = "${user}@acme.com">
假设数据模型中的user变量的值是Fred:
<#import "/lib/my_test.ftl" as my>
<@my.copyright date="1999-2002"/>
${my.mail}
结果:
<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 日期和时间类型。
这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:
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范围内。
mysql> select DAYOFMONTH('1998-02-03');
-> 3
DAYOFYEAR(date)
返回date在一年中的日数, 在1到366范围内。
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)
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是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的秒数,范围是0到59。
mysql> select SECOND('10:05:03');
-> 3
PERIOD_ADD(P,N)
增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。
mysql> select PERIOD_ADD(9801,2);
-> 199803
PERIOD_DIFF(P1,P2)
返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数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)
这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的
DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以
一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期
中返回“type”间隔。下表显示了type和expr参数怎样被关联: 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格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅
包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个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关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,
如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,
MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND
的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,
结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。
mysql> select DATE_ADD('1998-01-30', Interval 1 month);
-> 1998-02-28
注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。
TO_DAYS(date)
给出一个日期date,返回一个天数(从0年的天数)。
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS('1997-10-07');
-> 729669
TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。
FROM_DAYS(N)
给出一个天数N,返回一个DATE值。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'
TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。
DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
所有的其他字符不做解释被复制到结果中。
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()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。
其他修饰符产生一个NULL值或0。
CURDATE()
CURRENT_DATE
以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() + 0;
-> 19971215
CURTIME()
CURRENT_TIME
以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
mysql> select CURTIME();
-> '23:50:26'
mysql> select CURTIME() + 0;
-> 235026
NOW()
SYSDATE()
CURRENT_TIMESTAMP
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的
上下文被使用。
mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
-> 19971215235026
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一
个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME
字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。
FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串
还是或数字上下文中被使用。
mysql> select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条
目同样的修饰符。
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参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字
上下文中被使用。
mysql> select SEC_TO_TIME(2378);
-> '00:39:38'
mysql> select SEC_TO_TIME(2378) + 0;
-> 3938
TIME_TO_SEC(time)
返回time参数,转换成秒。
mysql> select TIME_TO_SEC('22:23:00');
-> 80580
mysql> select TIME_TO_SEC('00:39:38');
-> 2378
---------------------------------------------------------------------------------------------------------------------------
mysql日期处理函数
mysql日期处理函数
mysql自己有格式化日期格式的函数,可以在查询语句中使用
DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
如需要用php处理,可先用strtotime函数将日期转换为unix时间戳,再用date函数格式化
对于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的路径最好放在最前面。
当weblogic合成在myeclipse中的时候,在myeclipse的weblogic的classpath中设置驱动的路径
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文件,设置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出现问题,修改OPEN_CMS\webapp\WEB-INF\web.xml文件;在该文件的 最上面添加如下内容:
<!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文件的内容格式要求特别严格;必须按照xml格式的要求
及排列顺序,所以必须重新组织其内容,一定严格要注意顺序,如 <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添加如下内容,引进上面的2个jar文件
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\opencms.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\webdav.jar
大家有兴趣的可以参考《透视JAVA——反编译、修补和逆向工程技术》这本书的$4.2章的内容,如果找到更好的解决方法也请来信告知,谢谢~_~
5)其它注意事项,在eclipse下最好采用和运行weblogic一样的jdk版本进行编译,否则会出现文件访问版本不一致的bug
|