首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JAVA通用DAO种

2012-10-12 
JAVA通用DAO类package com.bank.commonimport java.sql.Connectionimport java.sql.DriverManagerimpor

JAVA通用DAO类

package com.bank.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class ConnectionManager {

?private static Connection conn = null;
/**
?* 通过JNDI获取数据库连接
?* @return
?* @throws Exception
?*/
?public static Connection getConn() throws Exception {
??Context context = new InitialContext();
??DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/bank");
??return dataSource.getConnection();
?}
/**
?* 更新方法
?* @param sql
?* @param params
?* @return
?*/
?public static int update(String sql, Object... params) {
??try {
???return makeState(sql, params).executeUpdate();
??} catch (Exception ex) {
???ex.printStackTrace();
??} finally {
???closeConn(conn);
??}
??return 0;
?}
/**
?* 查询方法
?* @param sql
?* @param params
?* @return
?*/
?public static List<Map<String, Object>> find(String sql, Object... params) {
??List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
??try {
???ResultSet rs = makeState(sql, params).executeQuery();
???ResultSetMetaData columns = rs.getMetaData();
???int count = columns.getColumnCount();
???while (rs.next()) {
????Map<String, Object> row = new HashMap<String, Object>();
????for (int i = 0; i < count; i++) {
?????String columnName = columns.getColumnName(i + 1);
?????row.put(columnName, rs.getObject(columnName));
????}
????list.add(row);
???}
??} catch (Exception ex) {
???ex.printStackTrace();
??} finally {
???closeConn(conn);
??}
??return list;
?}
/**
?* 遍历参数
?* @param sql
?* @param params
?* @return
?* @throws Exception
?*/
?public static PreparedStatement makeState(String sql, Object... params)
???throws Exception {
??conn = getConn();
??PreparedStatement pstmt = conn.prepareStatement(sql);
??for (int i = 0; i < params.length; i++) {
???pstmt.setObject(i + 1, params[i]);
??}
??return pstmt;
?}
?
?public static void closeConn(Connection conn) {
??if (conn != null)
???try {
????conn.close();
???} catch (SQLException e) {
????e.printStackTrace();
???}
?}

}

热点排行