hibernate-HQL語句
hibernate-HQL語句(1)
http://java.chinaitlab.com/Hibernate/809957.htmlposted @ 2010-08-21 13:43 smallfa 閱讀(198) | 評論 (0) | 編輯 收藏
posted @ 2010-08-21 13:43 smallfa 閱讀(198) | 評論 (0) | 編輯 收藏
posted @ 2010-08-09 23:02 smallfa 閱讀(393) | 評論 (0) | 編輯 收藏
posted @ 2010-08-04 11:40 smallfa 閱讀(205) | 評論 (0) | 編輯 收藏
(圖一)
下一
步,我們準備對這個方法進行測試,確保功能正常。選中Hello.java,右
鍵點擊,選擇New->JUnit
Test Case:
(圖二)
Eclipse會詢問是否添加junit.jar包,確定后新建一個HelloTest類,用來測試Hello類。
(圖三)
選中setUp()和tearDown(),然后點擊“Next”:
(圖
四)
選擇要
測試的方法,我們選中abs(int)方法,完成后在HelloTest.java中輸入:
(圖五)
JUnit會以以下順序執行測試:(大致的代碼)
try {
HelloTest test = new HelloTest(); // 建立測試類實例
test.setUp(); // 初始化測試環境
test.testAbs();
// 測試某個方法
test.tearDown(); // 清理資源
}
catch…
setUp()是建立測試環境,這里創建一個Hello類的實例;tearDown()用于清理資源,如釋放打開的文件等等。以test開頭的方法被認為是測試方法,JUnit會依次執行testXxx()方法。在testAbs()方法中,我們對abs()的測試分別選擇
正數,負數和0,如果方法返回值與期待結果相同,則assertEquals不會產生異常。
如果有
多個testXxx方法,JUnit會創建多個XxxTest實例,每次
運行一個testXxx方法,setUp()和tearDown()會在testXxx前后被調用,因此,不要在一個testA()中依賴testB()。
直接運
行Run->Run
As->JUnit Test,就可
以看到JUnit測試結果:
(圖六)
綠色表
示測試通過,只要有1個測試未通過,就會顯示紅色并列出未通過測試的方法。可以試圖改變abs()的代碼,故意返回錯誤的結果(比如return n+1;),然后再運行JUnit就會報告錯誤。
如果沒
有JUnit面板,選擇Window->Show View->Other,打開JUnit的View:
(圖七)
JUnit通過單元測試,能在開發階段就找出許多Bug,并且,多個Test Case可以組合成Test Suite,讓
整個測試自動完成,尤其適合于XP方法。每增加一個小的新功能或者對代碼進行了小的修改,就立刻運行一
遍Test Suite,確保新增和修改的代碼不會破壞原有的功能,大大增強軟件的可維護
性,避免代碼逐漸“腐爛”。
初次學會使用Junit的使用是通過這篇文章的(上文),自己嘗試跟著做了一遍,結果發現它上面提供的代碼例子是錯誤 的,不過流程、圖片都很清楚。所以你可以先看看它上面是怎么說的,至于測試的代碼我稍做了改動,為的是只要說明問題就行——其實不難。
posted @ 2010-07-20 09:40 smallfa 閱讀(1125) | 評論 (0) | 編輯 收藏
由于MySQL目前字段的默認值不支持函數的形式設置默認值是不可能的。
代替的方案是使用TIMESTAMP類型代替DATETIME類型。
CURRENT_TIMESTAMP
:當我更新這條記錄的時候,這條記錄的這個字段不會改變。
CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
:當我更新這條記錄的時候,這條記錄的這個字段將會改變。即時間變為了更新時候的時間。(注意一個UPDATE設置一個列為它已經有的值,這將不引起
TIMESTAMP列被更新,因為如果你設置一個列為它當前的值,MySQL為了效率而忽略更改。)如果有多個TIMESTAMP列,只有第一個自動更
新。
TIMESTAMP列類型自動地用當前的日期和時間標記INSERT或UPDATE的操作。
如果有多個
TIMESTAMP列,只有第一個自動更新。
自動更新第一個TIMESTAMP列在下列任何條件下發生:
列
值沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。
列值沒有明確地在一個UPDATE語句中指定且另
外一些的列改變值。(注意一個UPDATE設置一個列為它已經有的值,這將不引起TIMESTAMP列被更新,因為如果你設置一個列為它當前的
值,MySQL為了效率而忽略更改。)
你明確地設定TIMESTAMP列為NULL.
除第一個以外的
TIMESTAMP列也可以設置到當前的日期和時間,只要將列設為NULL,或NOW()。
另外在5.0以上版本中也可以使用
trigger來實現此功能。
create table test_time (
id int(11),
create_time
datetime
);
delimiter |
create
trigger default_datetime before insert on test_time
for each
row
if new.create_time is null then
set
new.create_time = now();
end if;|
delimiter ;
posted @ 2010-07-13 10:08 smallfa 閱讀(116) | 評論 (0) | 編輯 收藏
ctrl+shift+"反注釋!能講ctrl+shift+/ 多行注釋掉的內容反注釋掉
CTRL+T 查看接口的實現
1.首先在一個java文件中設斷點,然后運行debug,當程序走到斷點處就會停下。
2.F5鍵與F6鍵均為單步調試,
3.F7是跳出函數 step return
4.F8是執行到最后。
=====================================
1.Step Into (F5) 跳入
2.Step Over (F6) 跳過
3.Step Return (F7) 執行完當前method,然后return跳出此method
4.step Filter 逐步過濾
一直執行直到遇到未經過濾的位置或斷點(設置Filter:window-preferences-java-Debug-step
Filtering)
5.resume 重新開始執行debug,一直運行直到遇到breakpoint
6.hit count 設置執行次數 適合程序中的for循環(設置 breakpoint view-右鍵hit
count)
7.inspect 檢查 運算。執行一個表達式顯示執行值
8.watch 實時地監視變量的變化
9.我們常說的斷點(breakpoints)是指line breakpoints,除了line
breakpoints,還有其他的斷點類型:field(watchpoint)breakpoint,method
breakpoint,exception breakpoint.
10.field breakpoint 也叫watchpoint(監視點) 當成員變量被讀取或修改時暫掛
11.添加method breakpoint 進入/離開此方法時暫掛(Run-method breakpoint)
12.添加Exception breakpoint 捕抓到Execption時暫掛(待續...)
斷點屬性:
1.hit count 執行多少次數后暫掛 用于循環
2.enable condition 遇到符合你輸入條件(為ture\改變時)就暫掛
3.suspend thread 多線程時暫掛此線程
4.suspend VM 暫掛虛擬機
13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點擊右鍵--change
value.一次來進行快速調試。
14.debug
過程中修改了某些code后--〉save&build-->resume-->重新暫掛于斷點
===========================
例如你有如下程序:
public class debugtest {
}
你在(1)處加斷點,運行到此處時如果Step Into (F5)為跳入(進入函數),則接著執行到(3)。
再執行Step Over (F6)執行本行,則執行到(4)。
最后執行Step Return (also F7),則跳出addDays方法,跳到(2)
轉http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html
posted @ 2010-05-16 22:41 smallfa 閱讀(475) | 評論 (0) | 編輯 收藏
posted @ 2010-05-13 00:10 smallfa 閱讀(234) | 評論 (0) | 編輯 收藏
com.test.action.user包下:
SaveUserAction.java
SaveUserAction-validation.xml
SaveUserAction.java文件的內容:
package com.test.action.user;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
import com.test.service.UserService;
public class SaveUserAction extends ActionSupport
{
private User user;
private UserService service;
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
public UserService getService()
{
return service;
}
public void setService(UserService service)
{
this.service = service;
}
@Override
public String execute() throws Exception
{
this.service.save(this.user);
return SUCCESS;
}
@Override
@SuppressWarnings("unchecked")
public void validate()
{
Map map = this.getFieldErrors();
Set set = map.keySet();
for (Iterator iter = set.iterator(); iter.hasNext();)
{
System.out.println(map.get(iter.next()));
}
}
}
SaveUserAction-validation.xml的文件內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0.2//EN" "
<validators>
<field name="user">
<field-validator type="visitor">
<param name="context">user</param>
<param name="appendPrefix">true</param>
<message>user's </message>
</field-validator>
</field>
</validators>
com.test.bean包下的文件:
User.java;
User-user-validation.xml
User-user-validation.xml文件的內容:
<?xml version="1.0" encoding="UTF-8"?> <validators> <field name="lastname"> <field name="age"> </validators> 還有一個問題,就是校驗信息會重復,在錯誤的情況下。由以下代碼可以測試: @Override for (Iterator iter = set.iterator(); iter.hasNext();) 解決方法: 配置如下:<bean id="saveUserAction"
class="com.test.action.user.SaveUserAction" scope="prototype">
posted @ 2010-05-12 23:12 smallfa 閱讀(178) | 評論 (0) | 編輯 收藏
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0.2//EN" "
<field name="firstname">
<field-validator type="requiredstring">
<message>required first name</message>
</field-validator>
</field>
<field-validator type="requiredstring">
<message>required last name</message>
</field-validator>
</field>
<field-validator type="required">
<message>required age</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age should be between ${min} and
${max}</message>
</field-validator>
</field>
@SuppressWarnings("unchecked")
public void validate()
{
Map map = this.getFieldErrors();
Set set = map.keySet();
{
System.out.println(map.get(iter.next()));
}
}
}
applicationContext.xml 文件中的配置action中加入:Struts 2.0 的action 是有狀態的
在spring 配置的action 中加上 scope="prototype";
<property name="service" ref="userService"></property>
</bean>
posted @ 2010-05-08 01:10 smallfa 閱讀(462) | 評論 (0) | 編輯 收藏
去網上找了一些相關錯誤的信息看了下說Hibernate core下面的xerces.jar包的問題。刪除后正確了。
如果刪除后還是錯誤,看一下項目的lib文件夾下面的是否還有xerces相關jar包,也刪掉。
記住把tomcat 里面xerces.jar也要刪掉
posted @ 2010-05-05 00:36 smallfa 閱讀(200) | 評論 (0) | 編輯 收藏