java基礎的學習之引數的變化使用
public class 集合的例項化 {
//map的例項化
private static final HashMap<String,String> map = new HashMap<String,String>(){
{
put("one", "myGog");
put("one1", "myGog");
put("one2", "myGog");
put("one3", "myGog");
}
};
//java之多個引數的寫法 ,其實就是陣列的變形
public void praseArgs(Object ... objects ){
//參看java.lang.reflect.Method
//java.lang.reflect.Constructor
//這2個類的一些方法就可以看出來
process(objects);
}
private void process(Object[] obj){
}
public static void main(String[] args) {
System.out.println(map.get("one"));
}
}
一個是java中map的內部類例項化方式,一個是陣列變化形式的寫法。無聊中!!
引數型別的判斷
//有時候對預處理語句的引數的處理,我們可能需要判斷引數的型別
private void processArgsData(PreparedStatement prepStmt, Object[] args) throws SQLException {
if (prepStmt == null || args == null || args.length == 0) {
return;
}
Object obj = null;
int parameterIndex = 0;
for (int i = 0; i < args.length; i++) {
obj = args[i];
parameterIndex = i + 1;
if (obj instanceof String) {
//字串型別處理
prepStmt.setString(parameterIndex, obj.toString());
} else if (obj instanceof Integer) {
prepStmt.setInt(parameterIndex, 整型處理(obj));
} else if (obj instanceof Long) {
prepStmt.setLong(parameterIndex, 長整型處理(obj));
} else {
//Object型別處理
prepStmt.setObject(parameterIndex, obj);
}
}
}
下面模擬spring中 JDBC或者 Hibernate處理查詢的方式
:
/**
*
* @param sql 預處理sql
* @param args 引數,用於預處理用
* @param rch RowCallbackHandler 使用者實現的介面
* @throws BaseException
*/
public final void query (String sql, Object[] args, RowCallbackHandler rch) throws BaseException {
PreparedStatement pst = null;
ResultSet rs = null;
try {
//根據sql得到預處理語句
pst = this.prepareStatement(sql);
//處理引數
this.processArgsData(pst, args);
rs = pst.executeQuery();
while (rs.next()) {
//使用者呼叫自己實現處理結果集的方法 processRow
rch.processRow(rs);
}
} catch (Exception e) {
this.closeResultSet(rs);
this.closePreStatement(pst);
}
}
我們怎麼呼叫呢?
this.query(sql.toString(), null, new RowCallbackHandler() {
public void processRow (ResultSet rs) throws SQLException {
/ /對查詢出來的結果集進行處理
}
});
其中RowCallbackHandler是個介面:我們可以自己定義的,其實這個就是匿名內部類的使用,在spring中,到處可以看見的
相關文章
- [java基礎]之變數Java變數
- JAVA基礎之-引數傳遞Java
- JUnit5學習之六:引數化測試(Parameterized Tests)基礎Zed
- java基礎變數的交換Java變數
- Java - 可變引數的使用Java
- java基礎學習之--XMLJavaXML
- java基礎的學習Java
- 『忘了再學』Shell基礎 — 16、位置引數變數變數
- java基礎(九) 可變引數列表介紹Java
- python基礎學習_01變數Python變數
- 視覺化學習:WebGL的基礎使用視覺化Web
- fixtrue基礎之params引數實現簡單引數化
- Java基礎學習總結(120)——JVM 引數使用詳細說明JavaJVM
- java基礎學習:JavaWeb之ServletJavaWebServlet
- JAVA基礎學習篇之反射Java反射
- Java學習之基礎語法Java
- Java逆向基礎之靜態變數存取Java變數
- Java學習之基礎語法練習Java
- python基礎之 函式的引數Python函式
- golang學習之路之函式可變引數Golang函式
- java基礎學習_io流之FileInputStreamJava
- java基礎學習:JavaWeb之JSPJavaWebJS
- java基礎學習之十三:泛型Java泛型
- java基礎學習之十二:控制流Java
- 碎片化學習Java(三)-- Java定義變數Java變數
- fixtrue基礎之scope引數
- fixtrue基礎之name引數
- fixtrue基礎之autouse引數
- 【重學Java】可變引數Java
- 強化學習的基礎缺陷強化學習
- JAVA基礎學習-數字與字串學習總結Java字串
- Java基礎學習Java
- 『動善時』JMeter基礎 — 23、JMeter中使用“使用者自定義變數”實現引數化JMeter變數
- java基礎學習:JavaWeb之Cookie和SessionJavaWebCookieSession
- java基礎學習:JavaWeb之request和responseJavaWeb
- Java基礎之IO轉換流學習Java
- java基礎學習之類集框架(十)Java框架
- java基礎學習之四:修飾符Java