2014年1月9日 星期四

Oracle ORA-01795 解決方式

發生條件:
in語法,裡面超過 1000 個要查詢內容
例如
Select * from tablename where col in (‘col1’,’col2’ ……..)

要避開這個問題發生,可以考慮使用:

(1).Union語法:
select *  from student
 where id in ('1147', '1148', '1149', '1151', '1152', '1154', ...)
union
select *  from student
 where id in ('1157', '1158', '1159', '1161', '1162', '1164', ...)

(2).創建一個臨時Temp,將這些查詢資料,放進來這個臨時Temp:

select * from student where id in (select id from tmp_XX);

(3)將in 的語法拆開成數段
Select * from tablename where col in (‘col1’,’col2’ …….., ‘col1000’) or col in (‘col1001’, …………)

2014年1月7日 星期二

Eclipse 常用快捷鍵

常用:
ctrl+/ 註解
ctrl+\ 取消註解
ctrl+o 快速搜尋method
ctrl+e 快速切換分頁
ctrl+h 搜尋資料
ctrl+k 搜尋相同資料 +shift(上一個)
ctrl+g 工作中申明
ctrl+. 下一個錯誤
ctrl+1 快速修正
ctrl+q 回到最後編輯行
ctrl+t 查看類別結構
ctrl+m 放大編輯視窗
ctrl+shift+/ 多行註解
ctrl+shift+\ 取消多行註解
ctrl+shift+r 搜尋檔案
ctrl+shift+i 顯示變數資訊
ctrl+shift+g 參照搜尋
ctrl+shift+p 找對應括號
ctrl+shift+l 查看其他快捷鍵
ctrl+shift+f 格式化程式碼
ctrl+shift+o 引入package(all)
ctrl+shift+m 引入package
ctrl+alt+h 查詢引用
ctrl+alt+s svn
alt+up or down 當行上下移



其他:
參照自 Eclipse 快捷鍵大全

Ctrl+1 快速修復(最經典的快速鍵,就不用多說了)
Ctrl+D: 刪除當前行
Ctrl+Alt+↓ 複製當前行到下一行(複製增加)
Ctrl+Alt+↑ 複製當前行到上一行(複製增加)
Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
Alt+↑ 當前行和上面一行交互位置(同上)
Alt+← 前一個編輯的頁面
Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
Alt+Enter 顯示當前選擇資源(工程,or 檔 or檔)的屬性
Shift+Enter 在當前行的下一行插入空行(這時滑鼠可以在當前行的任一位置,不一定是最後)
Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
Ctrl+Q 定位到最後編輯的地方
Ctrl+L 定位在某行 (對於程式超過100的人就有福音了)
Ctrl+M 最大化當前的Edit或View (再按則反之)
Ctrl+/ 注釋當前行,再按則取消注釋
Ctrl+O 快速顯示 OutLine
Ctrl+T 快速顯示當前類的繼承結構
Ctrl+W 關閉當前Editer
Ctrl+K 參照選中的Word快速定位到下一個
Ctrl+E 快速顯示當前Editer的下拉清單(如果當前頁面沒有顯示的用黑體表示)
Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
Ctrl+×(小鍵盤) 展開當前類中的所有代碼
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有衝突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,啟動等操作)
Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)
Ctrl+Shift+F4 關閉所有打開的Editer
Ctrl+Shift+X 把當前選中的文本全部變味小寫
Ctrl+Shift+Y 把當前選中的文本全部變為小寫
Ctrl+Shift+F 格式化當前代碼
Ctrl+Shift+P 定位到對於的匹配符(譬如{}) (從前面定位後面時,游標要在匹配符裡面,後面到前面,則反之)

下面的快速鍵是重構裡面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快速鍵都是Alt+Shift開頭的了)
Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變數和類的Rename,比手工方法能節省很多勞動力)
Alt+Shift+M 抽取方法 (這是重構裡面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
Alt+Shift+C 修改函數結構(比較實用,有N個函式呼叫了這個方法,修改一次搞定)
Alt+Shift+L 抽取本地變數( 可以直接把一些魔法數位和字串抽取成一個變數,尤其是多處調用的時候)
Alt+Shift+F 把Class中的local變數變為field變數 (比較實用的功能)
Alt+Shift+I 合併變數(可能這樣說有點不妥Inline)
Alt+Shift+V 移動函數和變數(不怎麼常用)
Alt+Shift+Z 重構的後悔藥(Undo)

編輯
作用域 功能 快速鍵
全域 查找並替換 Ctrl+F
文字編輯器 查找上一個 Ctrl+Shift+K
文字編輯器 查找下一個 Ctrl+K
全域 撤銷 Ctrl+Z
全域 複製 Ctrl+C
全域 恢復上一個選擇 Alt+Shift+↓
全域 剪切 Ctrl+X
全域 快速修正 Ctrl1+1
全域 內容輔助 Alt+/
全域 全部選中 Ctrl+A
全域 刪除 Delete
全域 上下文資訊 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java編輯器 顯示工具提示描述 F2
Java編輯器 選擇封裝元素 Alt+Shift+↑
Java編輯器 選擇上一個元素 Alt+Shift+←
Java編輯器 選擇下一個元素 Alt+Shift+→
文字編輯器 增量查找 Ctrl+J
文字編輯器 增量逆向查找 Ctrl+Shift+J
全域 粘貼 Ctrl+V
全域 重做 Ctrl+Y

查看
作用域 功能 快速鍵
全域 放大 Ctrl+=
全域 縮小 Ctrl+-

窗口
作用域 功能 快速鍵
全域 啟動編輯器 F12
全域 切換編輯器 Ctrl+Shift+W
全域 上一個編輯器 Ctrl+Shift+F6
全域 上一個視圖 Ctrl+Shift+F7
全域 上一個透視圖 Ctrl+Shift+F8
全域 下一個編輯器 Ctrl+F6
全域 下一個視圖 Ctrl+F7
全域 下一個透視圖 Ctrl+F8
文字編輯器 顯示尺規上下文功能表 Ctrl+W
全域 顯示視圖功能表 Ctrl+F10
全域 顯示系統功能表 Alt+-

導航
作用域 功能 快速鍵
Java編輯器 打開結構 Ctrl+F3
全域 打開類型 Ctrl+Shift+T
全域 打開類型層次結構 F4
全域 打開聲明 F3
全域 打開外部javadoc Shift+F2
全域 打開資源 Ctrl+Shift+R
全域 後退歷史記錄 Alt+←
全域 前進歷史記錄 Alt+→
全域 上一個 Ctrl+,
全域 下一個 Ctrl+.
Java編輯器 顯示大綱 Ctrl+O
全域 在層次結構中打開類型 Ctrl+Shift+H
全域 轉至匹配的括弧 Ctrl+Shift+P
全域 轉至上一個編輯位置 Ctrl+Q
Java編輯器 轉至上一個成員 Ctrl+Shift+↑
Java編輯器 轉至下一個成員 Ctrl+Shift+↓
文字編輯器 轉至行 Ctrl+L

搜索
作用域 功能 快速鍵
全域 出現在檔中 Ctrl+Shift+U
全域 打開搜索對話方塊 Ctrl+H
全域 工作區中的聲明 Ctrl+G
全域 工作區中的引用 Ctrl+Shift+G

文本編輯
作用域 功能 快速鍵
文字編輯器 改寫切換 Insert
文字編輯器 上滾行 Ctrl+↑
文字編輯器 下滾行 Ctrl+↓

文件
作用域 功能 快速鍵
全域 保存 Ctrl+X
Ctrl+S
全域 列印 Ctrl+P
全域 關閉 Ctrl+F4
全域 全部保存 Ctrl+Shift+S
全域 全部關閉 Ctrl+Shift+F4
全域 屬性 Alt+Enter
全域 新建 Ctrl+N

項目
作用域 功能 快速鍵
全域 全部構建 Ctrl+B

原始程式碼
作用域 功能 快速鍵
Java編輯器 格式化 Ctrl+Shift+F
Java編輯器 取消注釋 Ctrl+\
Java編輯器 注釋 Ctrl+/
Java編輯器 添加導入 Ctrl+Shift+M
Java編輯器 組織導入 Ctrl+Shift+O
Java編輯器 使用try/catch塊來包圍 未設置,太常用了,所以在這裡列出,建議自己設置。
也可以使用Ctrl+1自動修正。

運行
作用域 功能 快速鍵
全域 單步返回 F7
全域 單步跳過 F6
全域 單步跳入 F5
全域 單步跳入選擇 Ctrl+F5
全域 調試上次啟動 F11
全域 繼續 F8
全域 使用篩檢程式單步執行 Shift+F5
全域 添加/去除中斷點 Ctrl+Shift+B
全域 顯示 Ctrl+D
全域 運行上次啟動 Ctrl+F11
全域 運行至行 Ctrl+R
全域 執行 Ctrl+U

重構
作用域 功能 快速鍵
全域 撤銷重構 Alt+Shift+Z
全域 抽取方法 Alt+Shift+M
全域 抽取區域變數 Alt+Shift+L
全域 內聯 Alt+Shift+I
全域 移動 Alt+Shift+V
全域 重命名 Alt+Shift+R
全域 重做 Alt+Shift+Y

像 VS 系列一樣的 Content Assist
預設是 " . " 或是自己使用 ALT+ ? 才會出現
要修改設定:
Window -> Preferences -> Java/Editor/Content Assist
在「Auto Activation triggers for java」 從 . 改為
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =.(!+-*/~,[{@#$%^&
 如此一來就像VS 一樣打一個字就有囉
相關資源:
Eclipse快捷键 10个最有用的快捷键
Eclipse 開發小技巧 - 程式範本
★ Eclipse 3.0 RC2 熱鍵表 (中英對照版,Default) ★
【上古秘籍】之Eclipse的秘籍

JAVA GC 觀念

網路上搜尋到的一些連結,在這邊連結筆記下來
以備不時之需
from:
misgod's notes
From Gossip@Openhome

2013年12月27日 星期五

2013年12月13日 星期五

Spring Framwwork 各版本 jar 下載 及簡易範例

下載位置:
http://mvnrepository.com/artifact/org.springframework
or
http://sourceforge.net/projects/springframework/files/

裡面包含單一檔案 和 整合(spring-full)版本

DTD檔下載位置
http://www.springframework.org/dtd/

bean.xml 抬頭設置





簡易範例:

---SpringTest.java
package spring001;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringTest {
    public static void main(String[] args) {
        ApplicationContext ctx = new FileSystemXmlApplicationContext("src\\bean.xml");
        person p = null;
        p = (person)ctx.getBean("chinese");
        System.out.println(p.sayHello("acc"));
        System.out.println(p.sayGoodbye("acc"));
        p = (person)ctx.getBean("english");
        System.out.println(p.sayHello("acc"));
        System.out.println(p.sayGoodbye("acc"));       
    }
}

--English.java
package spring001;
public class English implements person {
    @Override
    public String sayHello(String name) {
        return name + ",Hello!!!";
    }
    @Override
    public String sayGoodbye(String name) {
        return name + ",Good bye!!!";
    }
}

--Chinese.java
package spring001;
public class Chinese implements person {
    @Override
    public String sayHello(String name) {
        return name + ",哈囉!!!";
    }
    @Override
    public String sayGoodbye(String name) {
        return name + ",再見!!!";
    }
}

--person.java
package spring001;
public interface person {
    public String sayHello(String name);
    public String sayGoodbye(String name);
}

--bean.xml 放置在src目錄下


2013年12月12日 星期四

在Eclipse中,使用JBoss Tools 建立 Hibernate 相關 映射檔案(java,hbm.xml,cfg.xml等)

在Eclipse中先使用 Install new software 下載 JBoss Tools 或直接去官網下載。
以下以連結 Oracle 為例,首先建立一Dynamic Web Project



接著加入相關的jar檔,如 Hibernate jdbc for Oracle

接下來在Project上新增一Hibernate Configuration File

選擇存放hibernate.cfg.xml的位置,一般位於 src根目錄

接著進入如下畫面,開始著手相關配置

可以使用Get values from Conntection 來建立(New)配置檔,以後直接選擇配置檔存取即可

選擇資料庫類型,NameDescription 任意,接著點選Next

選擇資料庫版本,一般選Oracle Thin Driver,接著將相關的jdbc jar檔位置設定好


再至Properties 設定相關資料庫屬性,如UserID Password

完成後,會在src的目錄下看到該檔案(hibernate.cfg.xml),但請進入修改依些設定,如下圖

接著開啟一個新的 Perspective --> Hibernate

接下來可以在畫面分頁中查看是否設定正確,若正確,則可以在Database中查看相關Table資料

接下來執行 Hibernate Code Generation Configurations...

開啟畫面如下,可以新增一個自己的配置
Main
Console configuration --> 選擇自己的專案名稱
Output directory --> 選擇輸出檔案的目錄,一般設定為 src
Reverse engineer from JDBC Connection --> 請勾選
package --> 選擇要放置升成 java 映射檔的 pagkage 為何
reveng.xml --> 若未建立過,請選擇新增,一般也是設定在 src 的目錄下

Exporters
選擇要產出的檔案類型  java / hbm.xml映射檔等

其餘的不太需要變更,直接選擇Run,會發現專案目錄已出現我們要的檔案

其餘一些相關設定如以下圖片:
Table filters  
可選擇要建立相關映射的 Table

選擇產出的 ?.hbm.xml 檔案中,jdbc的資料型別對應Hibernate的類型

將重複無用對應資料刪除

建立要加入該 ?.hbm.xml資料的對應欄位,可順便設定primary key 相關產出方式
範例:
        <id name="logId"type="long">
            <column name="LOG_ID"precision="10" scale="0"/>
            <generator class="native">
              <param name="sequence">CHECKIN_LOG_AUTO</param>
            </generator>
        </id>
對照的選項如下:

完成後產出資料後,請記得去將該 ???.hbm.xml 加入 hibernate.cfg.xml mapping 中,如下

修改後的結果,其實可透過介面新增屬性,當然也可以直接對source對修改

如此就可以試著使用該產出的檔案,若有勾選輸出DAO,則可直接拿來運用

但請記得修改當中的 getSessionFactory()
    protected SessionFactory getSessionFactory() {
        try {
            //return (SessionFactory) new InitialContext().lookup("SessionFactory");
            return (SessionFactory)new          Configuration().configure().buildSessionFactory();
        } catch (Exception e) {
            log.error("Could not locate SessionFactory in JNDI", e);
            throw new IllegalStateException(
                    "Could not locate SessionFactory in JNDI");
        }
    }
如此一來才能順利取得 hibernate.cfg.xml 的相關配置資料

2013年12月3日 星期二

溫故知新 DDL、DML、DCL、DQL

資料定義語言:
DDL(Data Definition Language)


用來定義資料庫、資料表、檢視表、索引、預存程序、觸發程序、函數等資料庫物件。
可以用來建立、更新、刪除 table,schema,domain,index,view

常見的指令有:
CREATE 建立資料庫的物件
ALTER 變更資料庫的物件
DROP 刪除資料庫的物件


===========================================
資料操作語言:
DML(Data Manipulation Language)


用來處理資料表裡的資料。

常見的指令有:
INSERT 新增資料到資料表中
UPDATE 更改資料表中的資料
DELETE 刪除資料表中的資料
===========================================
資料控制語言:
DCL(Data Control Language)


用來控制資料表、檢視表之存取權限,提供資料庫的安全性。

常見的指令有:
GRANT 賦予使用者使用權限
REVOKE 取消使用者的使用權限
COMMIT 完成交易作業
ROLLBACK 交易作業異常,將已變動的資料回復到交易開始的狀態
===========================================
資料查詢語言:
DQL(Data Query Language)


負責進行資料查詢,不會對資料本身進行修改的語句

用來查詢資料表裡的資料。

指令只有一個:
SELECT 選取資料庫中的資料
===========================================
各類輔助指令:SELECT,FROM,WHERE,GROUP BY,ORDER BY

用來定義資料庫、資料表、檢視表、索引、預存程序、觸發程序、函數等資料庫物件。常見的指令有:
CREATE 建立資料庫的物件
ALTER 變更資料庫的物件
DROP 刪除資料庫的物件
Related Posts Plugin for WordPress, Blogger...