java 查询功能_java利用反射实现查询功能
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
/*用反射實現sql語句調用的思路:
1、先用ResultSetMetaData獲取我們的ResultSet 的Sql語句,通過Sql語句我們可以聯想到如何獲取到我們的字段
(字段代表Sql語句的字段,也就是我們表的列名)
2、再獲取sql語句里的字段長度(字段的個數)
3、遍歷我們的rs得到rs的結果集,別忘了定義得到我們封裝的對象
4、根據Sql語句里字段的長度遍歷得到我們的字段
(根據我們的命名需要,這時候我們需考慮字段中含有的下劃線,
我們這時要對字段含有的下劃線進行處理,當然這一步我們可以忽略不計)
5、到這一步時,我們需要考慮如何才能獲取到我們封裝的類型以及封裝的字段名稱?當然我們封裝的名稱,
與Sql語句的字段名稱是一致的。這個時候我們可以根據字段的名稱來找到我們封裝的類型是什么。
6、這里我們需要先把字段名首字母大寫,再用Method 拼接方法調用我們封裝的set 方法 :(set + name,type)
7、判斷類型,跟數據庫一一對應,把取到的值返回即可。
*/
實現代碼:public static List toReflect(ResultSet rs, Class obj) {
try {
List list = new ArrayList(); //ResultSetMetaData 用于獲取關于 ResultSet 對象中列的類型和屬性信息的對象。
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
T instance = null;
while (rs.next()){
instance = obj.newInstance();
for (int i=1;i
String name = rsmd.getColumnName(i);
name = toName(name).substring(0,1).toUpperCase()+toName(name).substring(1);
Class> type = obj.getDeclaredField(name).getType();
Method method = obj.getMethod("set" + name,type);
if (type.isAssignableFrom(String.class)){
method.invoke(instance,rs.getString(i));
}
}
list.add(instance);
}
return list;
}catch (SQLException e){
e.printStackTrace();
}catch (IllegalAccessException e){
e.printStackTrace();
}catch (InstantiationException e){
e.printStackTrace();
}catch (NoSuchFieldException e){
e.printStackTrace();
}catch (NoSuchMethodException e){
e.printStackTrace();
}catch (InvocationTargetException e){
e.printStackTrace();
}
return null;
}
public static String toCharActer(String string){
//從string第一個字符開始搜索有沒有“_”
if (string.indexOf("_")>-1){
//有“_”的把字符都轉換成小寫字母
string = string.toLowerCase();
}
//以“_”來分割我們的字符
String[] str=string.split("_");
//創建一個StringBuilder來拼接我們的字符(StringBuilder線程不安全,但效率快,值得提倡使用)
StringBuilder sb = new StringBuilder();
sb.append(str[0]);//拼接第一個字符
//判斷是否有多個字符str.length>1
if (str.length>1){
for (int i=1;i
//把首字母大寫
str[i] = str[i].substring(0,1).toUpperCase()+str[i].substring(1);
sb.append(str[i]);
}
}
return sb.toString();
}
總結
以上是生活随笔為你收集整理的java 查询功能_java利用反射实现查询功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 隐藏文件_java-如何仅列出
- 下一篇: java文件名特殊字符_如果拒绝打开文件