zoukankan      html  css  js  c++  java
  • JDBC框架

    public class JdbcUtils {
    
    	// 表示定义数据库的username
    	private final String USERNAME = "root";
    	// 定义数据库的password
    	private final String PASSWORD = "admin";
    	// 定义数据库的驱动信息
    	private final String DRIVER = "com.mysql.jdbc.Driver";
    	// 定义訪问数据库的地址
    	private final String URL = "jdbc:mysql://localhost:3306/testdb";
    	// 定义数据库的链接
    	private Connection connection;
    	// 定义sql语句的运行对象
    	private PreparedStatement pstmt;
    	// 定义查询返回的结果集合
    	private ResultSet resultSet;
    	// 实现批处理操作的功能
    	private Statement stmt;
    
    	public JdbcUtils() {
    		try {
    			Class.forName(DRIVER);
    			System.out.println("注冊驱动成功!!");
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    
    	// 定义获得数据库的链接
    	public Connection getConnection() {
    		try {
    			connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		return connection;
    	}
    
    	public boolean deleteByBatch(String[] sql) throws SQLException{
    		boolean flag = false;
    		stmt = connection.createStatement();
    		if(sql!=null){
    			for(int i=0;i<sql.length;i++){
    				stmt.addBatch(sql[i]);
    			}
    		}
    		int[] count = stmt.executeBatch();
    		if(count!=null){
    			flag = true;
    		}
    		return flag;
    	}
    	/**
    	 * 完毕对数据库的表的加入删除和改动的操作
    	 * 
    	 * @param sql
    	 * @param params
    	 * @return
    	 * @throws SQLException
    	 */
    	public boolean updateByPreparedStatement(String sql, List<Object> params)
    			throws SQLException {
    		boolean flag = false;
    		int result = -1;// 表示当用户运行加入删除和改动的时候所影响数据库的行数
    		pstmt = connection.prepareStatement(sql);
    		int index = 1;
    		if (params != null && !params.isEmpty()) {
    			for (int i = 0; i < params.size(); i++) {
    				pstmt.setObject(index++, params.get(i));
    			}
    		}
    		result = pstmt.executeUpdate();
    		flag = result > 0 ? true : false;
    		return flag;
    	}
    
    	/**
    	 * 查询返回单条记录
    	 * 
    	 * @param sql
    	 * @param params
    	 * @return
    	 * @throws SQLException
    	 */
    	public Map<String, Object> findSimpleResult(String sql, List<Object> params)
    			throws SQLException {
    		Map<String, Object> map = new HashMap<String, Object>();
    		int index = 1;
    		pstmt = connection.prepareStatement(sql);
    		if (params != null && !params.isEmpty()) {
    			for (int i = 0; i < params.size(); i++) {
    				pstmt.setObject(index++, params.get(i));
    			}
    		}
    		resultSet = pstmt.executeQuery();// 返回查询结果
    		ResultSetMetaData metaData = resultSet.getMetaData();
    		int col_len = metaData.getColumnCount();// 获得列的名称
    		while (resultSet.next()) {
    			for (int i = 0; i < col_len; i++) {
    				String cols_name = metaData.getColumnName(i + 1);
    				Object cols_value = resultSet.getObject(cols_name);
    				if (cols_value == null) {
    					cols_value = "";
    				}
    				map.put(cols_name, cols_value);
    			}
    		}
    		return map;
    	}
    
    	/**
    	 * 查询返回多行记录
    	 * 
    	 * @param sql
    	 * @param params
    	 * @return
    	 * @throws SQLException
    	 */
    	public List<Map<String, Object>> findMoreResult(String sql,
    			List<Object> params) throws SQLException {
    		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    		int index = 1;
    		pstmt = connection.prepareStatement(sql);
    		if (params != null && !params.isEmpty()) {
    			for (int i = 0; i < params.size(); i++) {
    				pstmt.setObject(index++, params.get(i));
    			}
    		}
    		resultSet = pstmt.executeQuery();
    		ResultSetMetaData metaData = resultSet.getMetaData();
    		int cols_len = metaData.getColumnCount();
    		while (resultSet.next()) {
    			Map<String, Object> map = new HashMap<String, Object>();
    			for (int i = 0; i < cols_len; i++) {
    				String cols_name = metaData.getColumnName(i + 1);
    				Object cols_value = resultSet.getObject(cols_name);
    				if (cols_value == null) {
    					cols_value = "";
    				}
    				map.put(cols_name, cols_value);
    			}
    			list.add(map);
    		}
    		return list;
    	}
    
    	// jdbc的封装能够用反射机制来封装:
    	public <T> T findSimpleRefResult(String sql, List<Object> params,
    			Class<T> cls) throws Exception {
    		T resultObject = null;
    		int index = 1;
    		pstmt = connection.prepareStatement(sql);
    		if (params != null && !params.isEmpty()) {
    			for (int i = 0; i < params.size(); i++) {
    				pstmt.setObject(index++, params.get(i));
    			}
    		}
    		resultSet = pstmt.executeQuery();
    		ResultSetMetaData metaData = resultSet.getMetaData();
    		int cols_len = metaData.getColumnCount();
    		while (resultSet.next()) {
    			// 通过反射机制创建实例
    			resultObject = cls.newInstance();
    			for (int i = 0; i < cols_len; i++) {
    				String cols_name = metaData.getColumnName(i + 1);
    				Object cols_value = resultSet.getObject(cols_name);
    				if (cols_value == null) {
    					cols_value = "";
    				}
    				Field field = cls.getDeclaredField(cols_name);
    				field.setAccessible(true);// 打开javabean的訪问private权限
    				field.set(resultObject, cols_value);
    			}
    		}
    		return resultObject;
    	}
    
    	/**
    	 * 通过反射机制訪问数据库
    	 * 
    	 * @param <T>
    	 * @param sql
    	 * @param params
    	 * @param cls
    	 * @return
    	 * @throws Exception
    	 */
    	public <T> List<T> findMoreRefResult(String sql, List<Object> params,
    			Class<T> cls) throws Exception {
    		List<T> list = new ArrayList<T>();
    		int index = 1;
    		pstmt = connection.prepareStatement(sql);
    		if (params != null && !params.isEmpty()) {
    			for (int i = 0; i < params.size(); i++) {
    				pstmt.setObject(index++, params.get(i));
    			}
    		}
    		resultSet = pstmt.executeQuery();
    		ResultSetMetaData metaData = resultSet.getMetaData();
    		int cols_len = metaData.getColumnCount();
    		while (resultSet.next()) {
    			T resultObject = cls.newInstance();
    			for (int i = 0; i < cols_len; i++) {
    				String cols_name = metaData.getColumnName(i + 1);
    				Object cols_value = resultSet.getObject(cols_name);
    				if (cols_value == null) {
    					cols_value = "";
    				}
    				Field field = cls.getDeclaredField(cols_name);
    				field.setAccessible(true);
    				field.set(resultObject, cols_value);
    			}
    			list.add(resultObject);
    		}
    		return list;
    	}
    
    	public void releaseConn() {
    		if (resultSet != null) {
    			try {
    				resultSet.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if (stmt != null) {
    			try {
    				stmt.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if (pstmt != null) {
    			try {
    				pstmt.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if (connection != null) {
    			try {
    				connection.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }


  • 相关阅读:
    java笔记6 Java语言基本类; String和StringBuffer ;集合类;流,文件及文本应用:JDBC
    java笔记5
    java笔记4 异常处理
    java笔记3
    java课笔记2
    java课笔记1
    TEXT
    机器学习
    WordCountPro
    WCProject(java)
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6901224.html
Copyright © 2011-2022 走看看