?SQL Server中文版的默認的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
這對于在要不同數據庫間轉移數據或者習慣oracle日期格式YYYY-MM-DD HH24:MI:SS的人多少有些不方便.
我整理了一下SQL Server里面可能經常會用到的日期格式轉換方法:
舉例如下:
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
其它我不常用的日期格式轉換方法:
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004
select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004
select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004
select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004
select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004
select CONVERT(varchar(12) , getdate(), 108 )
11:06:08
select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1
select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004
select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1
select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177
更多的及具體說明請參考SQL Server的聯機叢書.
Trackback:
http://fengyu.china.com/sqlserver_datefmt.htm
全面掌握
百度空間技巧之CSS詳細說明
body 整個空間頁面{background-color:#FFFFFF}
--------------------------------------------------------------------------------
空間名稱和簡介區(qū)域
#header 主體部分{height:89px;background:#3399CC}
#header div.lc 左背景圖{background:url(temp1/hdl.jpg) no-repeat}
#header div.rc 右背景圖{background:url(temp1/hdr.jpg) no-repeat top right}
#header div.tit 空間名稱{top:8px;left:20px;line-height:22px;font-size:20px;font-family:黑體}
#header div.tit a.titlink 空間名稱鏈接{color:#FFFFFF;text-decoration:none}
#header div.tit a.titlink:visited{color:#FFFFFF;text-decoration:none}
#header div.desc 空間簡介{top:33px;left:20px;color:#FFFFFF;font-size:13px}
#tabline TAB菜單下方的橫線{top:89px;background-color:#FFFFFF}
#tab TAB菜單主體{top:67px;background:url(temp1/tabbg.gif) repeat-x}
#tab a.on,#tab a.on:link,#tab a.on:visited TAB選中狀態(tài){margin-top:3px;border-left:1px solid
#FFFFFF;border-right:1px solid #FFFFFF;border-top:1px solid #FFFFFF;line-
height:19px;background-color:#F3F1F1;color:#197CAE;font-size:14px}
#tab span TAB與TAB之間的分割符“|”{color:#FFFFFF;font-size:14px}
#tab a:link TAB未選中狀態(tài){color:#FFFFFF;text-decoration:none;font-size:14px}
#tab a:visited{color:#FFFFFF;text-decoration:none;font-size:14px}
#tab2 設置TAB菜單主體{background:#DAE9F5}
#tab2 span TAB選中狀態(tài){color:#000000;font-size:12px;font-weight:bold}
#tab2 a TAB未選中狀態(tài){font-size:12px}
#tab2 a:link{color:#0000CC}
#tab2 a:visited{color:#0000CC}
--------------------------------------------------------------------------------
.stage 內容區(qū)域(TAB菜單與版權信息之間的區(qū)域){background:#F3F1F1}
其它區(qū)域(即訪問量等信息)
#comm_info 主體{color:#333333;font-family:Arial;text-align:left}
#comm_info div.line 分界線{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
#comm_info a 鏈接{color:#3399CC}
--------------------------------------------------------------------------------
頁碼區(qū)域
#page 主體{height:30px;font-size:14px;font-family:Arial;text-align:center}
#page span 當前頁碼(不可點擊){padding:3px;color:#000000;font-size:14px;font-weight:bold}
#page a.pc 上一頁和下一頁{color:#3399CC;font-size:14px;font-weight:bold}
#page a.pc:visited{color:#3399CC}
#page a.pi 頁碼(可點擊){padding:3px;color:#3399CC;font-size:14px}
#page a.pi:visited{color:#3399CC}
--------------------------------------------------------------------------------
模塊
.mod {margin-bottom:10px}
.modhandle{cursor:move}
.modth 模塊標題欄主體{height:24px}
.modhead{padding:4px 4px 0 4px}
.modopt 模塊操作區(qū)(如寫新文章){padding:4px 4px 0 0}
.modtit 模塊標題區(qū)(如文章列表){color:#FFFFFF;font-size:12px;font-weight:bold}a.modtit
{color:#FFFFFF}a.modtit:visited{color:#FFFFFF}
.modtitlink{color:#FFFFFF;font-size:12px;font-weight:bold}a.modtitlink{color:#FFFFFF;text-
decoration:none}a.modtitlink:visited{color:#FFFFFF;text-decoration:none}a.modtitlink:hover
{color:#FF5100;text-decoration:underline}
.modact 操作文字鏈接(如文章列表){color:#FFFFFF;font-size:12px}a.modact:link
{color:#FFFFFF}a.modact:visited{color:#FFFFFF}
.modbox 模塊內容區(qū){padding:10px 10px 0 10px;background-color:#FFFFFF}
.modtl 模塊左上角背景{background:url(temp1/ptitl.gif) no-repeat top left;line-height:1px}
.modtc 模塊中上背景{background:url(temp1/ptitc.gif) repeat-x}
.modtr 模塊右上角背景{background:url(temp1/ptitr.gif) no-repeat top right;line-height:1px}
.modbl 模塊左下角背景{background-color:#FFFFFF;line-height:1px}
.modbc 模塊中下背景{background-color:#FFFFFF;line-height:1px}
.modbr 模塊右下角背景{background-color:#FFFFFF;line-height:1px}
--------------------------------------------------------------------------------
文章區(qū)域
#m_blog div.tit 文章標題{font-size:14px;font-weight:bold}
#m_blog div.tit a 文章標題鏈接{color:#333333;font-size:14px;font-weight:bold}
#m_blog div.tit a:visited{color:#333333}
#m_blog div.date 文章發(fā)表日期{margin:5px 0 8px 0;color:#666666}
#m_blog div.cnt 文章內容{color:#333333;line-height:20px;font-size:14px}
#m_blog div.more{margin:14px 0 16px 0}
#m_blog div.more a 閱讀全文鏈接{color:#3399CC;font-size:14px}
#m_blog div.more a:visited{color:#3399CC}
#m_blog div.opt 文章操作區(qū)(如編輯、評論等){color:#666666;font-size:12px}
#m_blog div.opt a 文章操作鏈接{color:#3399CC;font-size:12px}
#m_blog div.opt a:visited{color:#3399CC}
#m_blog div.line 分界線{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_blog div.none 無文章提示信息{padding:100px 0 100px 0;color:#333333;font-size:14px}
--------------------------------------------------------------------------------
個人檔案區(qū)域
#m_pro a 鏈接{color:#3399CC}
#m_pro a:visited{color:#3399CC}
#m_pro div.image 個人頭像{text-align:center}
#m_pro div.act 操作區(qū)(如加為好友、發(fā)送消息){margin-top:10px}
#m_pro div.user 用戶名{margin-top:10px;color:#333333;font-size:12px;font-weight:bold}
#m_pro div.desc 用戶簡介{color:#333333;font-size:12px}
#m_pro div.line 分界線{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
#m_pro td{color:#333333;line-height:24px;font-size:14px}
--------------------------------------------------------------------------------
相冊區(qū)域
#m_album div.image 照片{text-align:center}
#m_album div.page {color:#666666;font-size:12px;text-align:center}
#m_album div.page a{color:#0000CC;font-size:12px}
#m_album div.page a:visited{color:#0000CC}
--------------------------------------------------------------------------------
友情鏈接區(qū)域
#m_links div.item 子項{color:#333333;font-size:12px}
#m_links div.item a 名稱(鏈接){color:#3399CC;font-size:12px;text-decoration:none}
#m_links div.item a:visited{color:#3399CC}
#m_links div.line 分界線{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
文章分類
#m_artclg div.item 子項{color:#666666;font-size:12px}
#m_artclg div.item a 分類名稱(鏈接){color:#3399CC;font-size:12px}
#m_artclg div.item a:visited{color:#3399CC}
#m_artclg div.line 分界線{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
最新評論區(qū)域
#m_comment div.item 子項{color:#333333;font-size:12px}
#m_comment div.item a 發(fā)表人(鏈接){color:#3399CC;font-size:12px}
#m_comment div.item a:visited{color:#3399CC}
#m_comment div.item a.cnt 評論摘要(鏈接){color:#333333;font-size:12px;text-
decoration:none}
#m_comment div.item a.cnt:visited{color:#333333;text-decoration:none}
#m_comment div.item a.cnt:hover{color:#333333;text-decoration:underline}
#m_comment div.line 分界線{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
相冊列表
#m_albumlist div.note{color:#333333;font-size:14px}
#m_albumlist div.desc 簡介{margin-bottom:12px;padding:3px 10px 3px 10px;line-
height:22px;background-color:#F2F2F2;font-size:14px}
#m_albumlist div.none 無照片提示信息{padding:100px 0 100px 0;color:#333333;font-size:14px}
#m_albumlist div.line 分界線{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}
#m_albumlist div.tit 照片標題{margin:6px 0 7px 0;color:#333333;font-size:14px}
#m_albumlist div.tit a 照片標題鏈接{color:#3399CC;font-size:14px}
#m_albumlist div.tit a:visited{color:#3399CC}
#m_albumlist span.count 照片數量{color:#666666;font-size:12px;font-weight:bold}
#m_albumlist span.size 照片尺寸{color:#999999;font-size:12px;font-family:Arial}
#m_albumlist a.act 操作區(qū)鏈接(如編輯、刪除){color:#3399CC;font-size:12px}
#m_albumlist a.act:visited{color:#3399CC}
#m_albumlist a.page 頁碼鏈接{color:#0000CC;font-size:14px}
#m_albumlist a.page:visited{color:#0000CC}
#m_albumlist td.image{padding:5px;border:1px solid #999999;background:#FFFFFF}
--------------------------------------------------------------------------------
好友列表
#m_friend div.filter{margin-bottom:10px;padding-left:10px;padding-
top:10px;height:27px;line-height:27px}
#m_friend div.catalog{margin-bottom:10px;padding-left:10px;height:27px;line-
height:27px;background-color:#F2F2F2;font-size:14px}
#m_friend div.user{margin-top:4px;color:#333333;font-size:12px}
#m_friend div.user a 好友名稱(鏈接){color:#3399CC;font-size:12px}
#m_friend div.user a:visited{color:#3399CC}
#m_friend div.line 分界線{margin-top:10px;line-height:16px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
設置訪問統計、模板設置
#m_setting a 鏈接{color:#3399CC}
#m_setting a:visited{color:#3399CC}
#m_setting 主體{line-height:22px;color:#333333;font-size:14px}
#m_setting img.sel 模板預覽圖(選中狀態(tài)){border:4px solid #FFDB7B}
#m_setting img.unsel 模板預覽圖(未選中狀態(tài)){border:1px solid #D2D2D2}
#m_setting span.tit 模板標題名稱{font-size:14px}
#m_setting span.usr 作者名{color:#666666}
#m_setting div.sel “當前模板”文字{padding-top:6px;font-size:14px;font-weight:bold}
#m_setting div.line 分界線{margin-top:20px;line-height:16px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
系統公告
#m_sysinfo a 鏈接{color:#3399CC}
#m_sysinfo a:visited{color:#3399CC}
#m_sysinfo 主體{line-height:22px;color:#333333;font-size:14px}
#m_sysinfo span.new 最新{color:#FF0000;font-size:10px;font-family:Arial}
#m_sysinfo span.date 發(fā)布時間{color:#666666;font-size:14px}
--------------------------------------------------------------------------------
基本選項
#m_setbase 主體{color:#333333;font-size:14px}
#m_setbase td{color:#333333;font-size:14px}
#m_setbase div.line 分界線{margin-top:5px;line-height:8px;border-top:1px solid #D2E9F4}
--------------------------------------------------------------------------------
網友評論
#in_comment 主體{width:710px}
#in_comment div.tit 標題{margin-bottom:12px;color:#333333;font-size:14px;font-weight:bold}
#in_comment div.user 發(fā)表人名{margin-bottom:6px;color:#333333;font-size:12px}
#in_comment div.user a 發(fā)表人名(鏈接){color:#3399CC;font-size:12px}
#in_comment div.user a:visited{color:#3399CC}
#in_comment div.user span.date 發(fā)表時間{color:#666666;font-size:12px}
#in_comment div.desc 評論內容{color:#333333;font-size:12px}
#in_comment div.line 分界線{margin-top:17px;line-height:17px;border-top:1px solid #D2E9F4}
TrackBack:
http://www.mboba.com/art/517_16.htm
Tomcat是Sun和Apache合作產生出來的JSP Server, 它支持Servlet 和JSP. Tomcat本身可以作為Web Server, 當處理靜態(tài)頁面時,Tomcat不如Apache迅速,不象Apache一樣可配置. Apache作為最流行的Web服務器,它功能強大,高效,但并不支持JSP及servlet,所以通常的做法是把它們整合起來,讓Apache處理靜態(tài)頁面,而把動態(tài)頁面的請求交給Tomcat處理,發(fā)揮各自的優(yōu)勢. 通過在Apache中加載整合模塊和進行設置,Apache就能夠根據URL,把不屬于自己的請求轉給Tomcat. 要讓Apache和Tomcat聯合工作,還必需有一個連接器(connector)把它們聯系起來. Connector對于性能、配置的方便性有很重要的影響,目前大致上有JK1.x,JK2, mod_webapp三種connector可以使用.JK使用比較廣泛.JK2是JK1.x的改進,比較新。這三種Connector的配置方法大相徑庭,在參考別人的整合方法時一定要注意. 另外,Tomcat是用Java寫的,所以你的系統必須有JDK或JRE. 我的OS是Solaris9,用到的版本分別是Apache 2.0.47 ; Tomcat 5.0.27 ; Jk2 2.0.4; J2sdk 1.4.2_05.
現在開始: 好了,先去下載要用到了軟件,它們都是for free的. Apache ,Tomcat ,Jk2在Apache的官方網站上都可以下的到. http://www.apache.org JDK 在Sun的網站上. http://www.sun.com 以下是我下載到的: httpd-2.0.47.tar.gz jakarta-tomcat-5.0.27.tar.gz jakarta-tomcat-connectors-jk2-src-current.tar.gz j2sdk-1_4_2_05-solaris-sparc.tar.Z (32bit的, 先安裝這 個再安裝下面64bit的) j2sdk-1_4_2_05-solaris-sparcv9.tar.Z(最后兩個是Solaris的Package,對于其他的系統下可用,不過可以下載相應的版本.) 安裝Apache 對于Apache的安裝,有很多帖子都介紹過, 安裝時注意一點:一定要有 --enable-so 加載so模塊,這是整合要用到的. gzip –d httpd-2.0.47.tar.gz tar xvf httpd-2.0.47.tar cd httpd-2.0.47 ./configure – with-layout=Apache2 -prefix=/path to install directory -enable-so make make install 好了,Apache的安裝完成了.
我的安裝目錄是/usr/local/apahce2.修改apache的http.conf ServerName name OfYourServer Group nogroup 進入/usr/local/apache2/bin 執(zhí)行 ./apachectl start 啟動apache (./apachectl stop 停止) 如果成功,通過瀏覽器就可以看到Apche的默認主頁了 http://ServerIp (httpd –l 可以列出已經加載的模塊) 安裝JDK Java是SUN開發(fā)的,所以它在自家的OS上預裝了java的運行環(huán)境. java -version 可以看到java的版本號.Soaris9是1.4.1_01a uncompress j2sdk-1_4_2_05-solaris-sparc.tar.Z tar xvf j2sdk-1_4_2_05-solaris-sparc.tar 解壓后得到幾個SUNW開頭的文件,把它們放到一個目錄下 先要將以前的java包刪除! pkgrm SUNWj3dmo SUNWj3man SUNWj3dev SUNWj3rt pkgrm SUNWlj3dv SUNWlj3rt (如果有的話,pkginfo | grep SUNWj3 查看) 添加新包, pkgadd –d ./ (在剛才放解壓的幾個SUNW目錄) 再安裝64bit的包, 同樣 uncompress j2sdk-1_4_2_05-solaris-sparcv9.tar.Z tar xvf j2sdk-1_4_2_05-solaris-sparcv9.tar pkgadd –d ./ 好了,安裝完了.
java –version ,看版本號變了! 詳細的說明,參考SUN網站上的文檔! 安裝Tomcat 在安裝Tomcat之前,要設置兩個環(huán)境變量: JAVA_HOME =/usr/j2se CLASSPATH =/usr/j2se/lib:/usr/j2se/jre/lib (這是針對Solaris9的,Solaris8 /usr/java1.2; Solaris7 /usr/java1.1) (其他的系統下,是你安裝JDK的目錄) export JAVA_HOME CLASSPATH 有了,這兩個變量,Tomcat才能安裝. jakarta-tomcat-5.0.27.tar.gz 是個二進制文件解壓后解可用. 我把它解壓到了,/usr/local/ src/jakarta-tomcat-5.0.27 建一個鏈接 ln –s /usr/local/ src/jakarta-tomcat-5.0.27 /usr/local/tomcat 這樣以后升級就方便了,剛才的apache也應該這么做. 設置相應的變量: CATALINA_HOME=/usr/local/tomcat CATALINA_BASE=/usr/local/tomcat export CATALINA_HOME CATALINA_BASE 進入/usr/local/tomcat/bin ./startup.sh 啟動tomcat 通過瀏覽器 http://SeverIP:8080 看到了一只貓!(5.0才有吧,4.X沒看到) port 8080 是Tomcat的默認端口 安裝JK2 如果以上安裝順利的話,繼續(xù)安裝JK2吧 先解壓到/usr/local/src下得到了, jakarta-tomcat-connectors-jk2-2.0.4-src 進入目錄, cd jk/native2 ./buildconf.sh (我沒成功,跳過了) ./configure&--with-apxs2=/usr/local/apache2/bin/apxs& make make install (如果不成功,把mod_jk2.so&拷貝到Apache得modules下) cp&jk/build/jk2/apache2/mod_jk2.so& /usr/local/apache2/modules 還有一個jkjni.so&,說是用來啟動Apache 時自動啟動Tomcat的,如果就也拷貝吧.我沒有看到! cp&jk/build/jk2/apache2/jkjni.so&/usr/local/apache2/modules 整合 步入正題了,整合涉及到了4個配置文件 Apache 的 httpd.conf 和 workers2.properties (創(chuàng)建) Tomcat 的 server.xml 和 jk2.properties (不過這兩個文件,我沒改過也成功了) &httpd.conf 在Apache中添加mod_jk2.so模塊: LoadModule&jk2_module&modules/mod_jk2.so workers2.properties: 這是我的workers2.properties #&Example&socket&channel,&override&port&and&host [channel.socket:localhost:8009] port=8009 host=127.0.0.1 #&define&the&worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 #&Uri&mapping [uri:/jsp-examples/*] worker=ajp13:localhost:8009 好了,重啟Apache和Tomcat http://ServerIp/jsp-examples 如果看到的效果和 http://ServerIp:8080/jsp-examples 一樣就說明整合成功.
出處:http://www.chinabs.net/webj2ee/default.asp?infoid=424
Hibernate.cfg.xml配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "hibernate-configuration-2.0.dtd">
<hibernate-configuration>
??? <session-factory>
??????? <!-- properties -->
??????? <!-- jndi -->
??????? <property name="connection.datasource">java:comp/env/jdbc/quickstart</property>
??????? <property name="connection.provider_class">net.sf.hibernate.connection.DatasourceConnectionProvider</property>
??????? <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
??????? <!-- jdbc
??????? <property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=pubs</property>
??????? <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
??????? <property name="connection.username">sa</property>
??????? <property name="connection.password"></property>
???????? -->
??????? <property name="jdbc.fetch_size">50</property><!-- 一次讀的數據庫記錄數 -->
??????? <property name="jdbc.batch_size">30</property><!-- 設定對數據庫進行批量刪除 -->
??????? <property name="show_sql">true</property><!-- 將Hibernate發(fā)送給數據庫的sql顯示出來 -->
??????? <!-- Mapping files -->
??????? <mapping resource="cat.hbm.xml"/>
??? </session-factory>
</hibernate-configuration>
數據庫表主鍵的知識點:
Generator 為每個 POJO 的實例提供唯一標識。一般情況,我們使用“native”。class 表示采用由生成器接口net.sf.hibernate.id.IdentifierGenerator 實現的某個實例,其中包括:
“assigned”
主鍵由外部程序負責生成,在 save() 之前指定一個。
“hilo”
通過hi/lo 算法實現的主鍵生成機制,需要額外的數據庫表或字段提供高位值來源。
“seqhilo”
與hilo 類似,通過hi/lo 算法實現的主鍵生成機制,需要數據庫中的 Sequence,適用于支持 Sequence 的數據庫,如Oracle。
“increment”
主鍵按數值順序遞增。此方式的實現機制為在當前應用實例中維持一個變量,以保存著當前的最大值,之后每次需要生成主鍵的時候將此值加1作為主鍵。這種方式可能產生的問題是:不能在集群下使用。
“identity”
采用數據庫提供的主鍵生成機制。如DB2、SQL Server、MySQL 中的主鍵生成機制。
“sequence”
采用數據庫提供的 sequence 機制生成主鍵。如 Oralce 中的Sequence。
“native”
由 Hibernate 根據使用的數據庫自行判斷采用 identity、hilo、sequence 其中一種作為主鍵生成方式。
“uuid.hex”
由 Hibernate 基于128 位 UUID 算法 生成16 進制數值(編碼后以長度32 的字符串表示)作為主鍵。
“uuid.string”
與uuid.hex 類似,只是生成的主鍵未進行編碼(長度16),不能應用在 PostgreSQL 數據庫中。
“foreign”
使用另外一個相關聯的對象的標識符作為主鍵。
以下舉例:
1、指定參數的情況:
??? <id name="id" unsaved-value="0">
????? <generator class="sequence">
??????? <param name="sequence">SEQ_CHILD</param>
????? </generator>
</id>
使用的是sequence,適合oracle數據庫;
2、對于sql server2000中的數據庫子增字段,在配置文件使用下列方法實現:
<id name="id" type="long" unsaved-value="0">
???? <column name="id" sql-type="numeric" not-null="true" />
???? <generator class="identity" />
</id>
這里主要是:identity:代表由sql server2000數據庫自己提供子增字段.如果要hibernate自己提供,則用increment關鍵字來實現
3、如果表中的主鍵用字符串類型:可以用hibernate自己提供的方法實現主鍵唯一:
? <id name="id" type="string" unsaved-value="null">
????? <column name="cid" sql-type="char(32)" not-null="true" />
????? <generator class="uuid.hex" />
? </id>
使用的是uuid.hex: 采用128位的算法來生成一個32位字符串。最通用的一種方式。適用于所有數據庫。
重要的知識點:
1. 如果有部門表,有員工表,員工表中有dep_id,則表部門類和員工類是one-to-many的關系:
?? 可以使用:? ( 在部門類department中使用下列)
?? Department類:?
???? /**? 部門的所有員工?? */
??? private Set staffs = new TreeSet();
???
??? xml的文件:
????? <set name="staffs" >
????????? <key column="dep_id"/>
????????? <one-to-many class="hbp.sys.data.Staff"/>
????? </set>
????? 如果是list,需要用索引<index> </index>,具體其中的含義,不是很明白.待以后研究
?????
?2. 如果部門要有一個負責人,即部門表(tb_department)中有一個字段:staff_id.
???? 那么表示部門和負責人之間的關系是many-to-one的關系
???? Department類:
????? /** 部門負責人id */
??? private Staff staff;
???
??? xml 文件
???? <many-to-one name="staff" class="hbp.sys.data.Staff"? column="staff_id"/>?
?
?3. 多對多關系,一般我們是做一個中間關聯表.我用角色和權限做了個例子,
????? Right(id,name)???? Role(id,name)?? 中間表:tb_role_right(role_id,right_id)
????? Right類中有一個Role的集合:private Set roles=new TreeSet();
????? Role類中也有一個Right的集合:private Set rights=new TreeSet();
????? 則兩者是明顯的多對多關系.使用many-to-many來實現;
????? xml文件中
????? right.hbm.xml:如下:
??????? <set name="roles" table="tb_role_right" cascade="all">
?????????? <key column="right_id"/>
?????????? <many-to-many column="role_id" class="hbp.sys.data.Role"/>
??????? </set>
????? role.hbm.xml文件中類似:
??????? <set name="rights" table="tb_role_right" cascade="all">
????????? <key column="role_id"/>
????????? <many-to-many column="right_id" class="hbp.sys.data.Right"/>
??????? </set>
4. 幾個值得注意的問題:
??????? a)在xml?映射文件中,寫類的名字時一定用類的全名:即:包+類名如:(hbp.sys.data.Staff),這個錯誤使我費了半天勁.:(
??????? b)我在寫實現基本DAO操作時,寫了
???????????? session.delete("from Right as right where right.id="+id);?
???????????? 程序死活報錯,我折騰了半天,跟蹤到底,才恍然大悟,hibernate在解析sql語句的時候把
???????????? 其中的right,當成了數據庫中的右連接("保留字"),唉,這種關鍵字,不能隨便用啊,:)
5. hibernate中HQL語言的查詢根據你的sql的不同而返回不同的對象類型.
???????? 如果你使用session.find(String hql)
???????? 一般會返回一個List,如:from Staff staff;返回的是包含所有的員工對象的集合
???????? 如你的hql為:select count(*) from Staff staff;則返回的是一個Integer對象
???????? 如果你使用的hql為:select count(distinct staff.name),count(*) from Staff staff;則返回的是一個Object
???????? 即Object[],需要先把他轉換成Object[],然后在取[0],[1].
???????? 這種設計我不知道hibernate是如何處理的,感覺既好也不好.好的是可以使用一個find獲得任意查詢
???????? 不好在于根據hql來處理返回結果,容易出錯.
出處:
http://www.chinabs.net/webj2ee/default.asp?infoid=400經??匆妀sp版里有人問時間操作的問題,這些問題一般包括:取當前時間,把一個指定的字符串時間轉化成時間類型,求兩個時間之間的天數,求一段時間以前的時間,求一段時間以后的時間,在這里就把這些問題匯總一下。
<%@? page? contentType="text/html;charset=gb2312"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%
//字符串轉化成時間類型(字符串可以是任意類型,只要和SimpleDateFormat中的格式一致即可)
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");?
out.println(d);
out.println("<br>");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
out.println(mDateTime1);
out.println("<br>");
out.println(d.getTime());
out.println("<br>");
//當前時間
Calendar cal? = Calendar.getInstance();
//? SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd? HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd? HH:mm:ss G E D F w W a E F");
String mDateTime=formatter.format(cal.getTime());
out.println(mDateTime);
out.println("<br>");
//1年前日期
java.util.Date myDate=new java.util.Date();?
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");
//明天日期
myDate=new java.util.Date();
myTime=(myDate.getTime()/1000)+60*60*24;
myDate.setTime(myTime*1000);
mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");
//兩個時間之間的天數
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= myFormatter.parse("2003-05-1");
java.util.Date mydate= myFormatter.parse("1899-12-30");
long? day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
out.println(day);
out.println("<br>");
//加半小時
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2002-02-28 23:16:00");
long Time=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
String mydate1=formatter.format(date1);
out.println(mydate1);
out.println("<br>");
//年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
out.println(mydate2);
out.println("<br>");
//求是星期幾
mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
out.println(mydate3);
out.println("<br>");
%>