国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java執行SQL語句實現查詢的通用方法詳解

2024-07-13 10:15:05
字體:
來源:轉載
供稿:網友

完成SQL查詢 并將查詢結果放入Vector容器,以便其他程序使用

/*    * 執行sql查詢語句    */public static <T> Vector<T> executeQuery(Class<T> clazz, String sql, Object... args) {	Connection conn = null;	PreparedStatement preparedstatement = null;	ResultSet rs = null;	Vector<T> vecRs = new Vector<T>();	T obj = null;	try {		conn = JDBCTools.getConnection();		preparedstatement = conn.prepareStatement(sql);		// 通過sql語句來判斷選擇了那些列 		for (int i = 0; i < args.length; i++) {			preparedstatement.setObject(i + 1, args[i]);		}		// 利用sql查詢獲取結果集 		// 利用反射創建實體類的對象 		// 獲取結果街的別名Stud_id 獲取JDBC的元數據 		// 獲取結果集每一列的值,結合上一步得到一個Map鍵值對 		// 鍵:列的別名 值:列的值 		// 在利用反射對實體類對象的屬性賦值 		// 屬性為Map的鍵 值為Map的值 		rs = preparedstatement.executeQuery();		// 獲取元數據 		ResultSetMetaData rsmd = rs.getMetaData();		Map<String, Object> mapMetaData = new HashMap<String, Object>();		// 打印一列的列名 		while (rs.next()) {			//獲取數據表中滿足要求的一行數據,并放入Map中 			for (int i = 0; i < rsmd.getColumnCount(); i++) {				String columnLabel = rsmd.getColumnLabel(i + 1);				Object columnValue = rs.getObject(columnLabel);				// System.out.println(columnLabel); 				mapMetaData.put(columnLabel, columnValue);			}			//將Map中的數據通過反射初始化T類型對象 			if (mapMetaData.size() > 0) {				obj = clazz.newInstance();				for (Map.Entry<String, Object> entry : mapMetaData.entrySet()) {					String fieldkey = entry.getKey();					Object fieldvalue = entry.getValue();					// System.out.println(fieldkey + ":" + fieldvalue); 					ReflectionUtils.setFieldValue(obj, fieldkey, fieldvalue);					//通過反射賦值				}			}			//將對象裝入Vector容器 			vecRs.add(obj);		}	}	catch (Exception e) {		e.printStackTrace();	}	return vecRs;}

其中使用到的工具類方法

獲取數據庫連接JDBCTools.getConnection()

/*    * 獲取數據庫的連接    */public static Connection getConnection() throws Exception {	Connection conn = null;	String driver = null;	String jdbcUrl = null;	String username = null;	String password = null;	// 獲取Properties對象 	Properties properties = new Properties();	InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");	properties.load(in);	driver = properties.getProperty("driver");	jdbcUrl = properties.getProperty("jdbcUrl");	username = properties.getProperty("user");	password = properties.getProperty("password");	Class.forName(driver);	conn = DriverManager.getConnection(jdbcUrl, username, password);	return conn;}

ReflectionUtils.setFieldValue(obj,fieldkey,fieldvalue);

將obj對象的fieldkey屬性賦值為fieldvalue

//設置對象的屬性 public static void setFieldValue(Object obj,String fieldName,Object value){	Field field=getDeclaredField(obj, fieldName);	if(field==null){		throw new IllegalArgumentException("Could not find field["+ 		    fieldName+"] on target ["+obj+"]");	}	makeAccessiable(field);	try{		field.set(obj, value);	}	catch(IllegalAccessException e){		System.out.println("不可能拋出的異常");	}}//判斷field的修飾符是否是public,并據此改變field的訪問權限 public static void makeAccessiable(Field field){	if(!Modifier.isPublic(field.getModifiers())){		field.setAccessible(true);	}}//獲取field屬性,屬性有可能在父類中繼承 public static Field getDeclaredField(Object obj,String fieldName){	for (Class<?> clazz=obj.getClass(); clazz!=Object.class; clazz=clazz.getSuperclass()){		try{			return clazz.getDeclaredField(fieldName);		}		catch(Exception e){		}	}	return null;}

總結

以上就是本文關于java執行SQL語句實現查詢的通用方法詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 巴东县| 霍邱县| 大邑县| 广宁县| 通道| 阿荣旗| 蒲江县| 晋中市| 博白县| 浦城县| 沙雅县| 神木县| 定边县| 宜城市| 新密市| 揭阳市| 蕲春县| 沙雅县| 含山县| 海晏县| 英德市| 锦屏县| 博客| 通榆县| 浙江省| 克拉玛依市| 雅江县| 鹤山市| 张掖市| 瓮安县| 广水市| 黑水县| 永春县| 留坝县| 平塘县| 望都县| 仁寿县| 会理县| 连城县| 剑川县|