}
// 将指定的值与此映射中的指定键关联(可选操作)。
 map.put(cols_name, cols_value);
 }
 }
 //关闭数据库
 MysqlUtil.releaseConn();
 return map;
 }/**
• 通过反射机制访问数据库,查询前几页的内容
• 
• @param sql
• @param params
• @param cls
• @return
• @throws Exception
 */
 public static List queryEvamall(String sql, List params,
 Class cls) throws Exception {
//加载数据库驱动
 new MysqlUtil();
 //连接数据库
 MysqlUtil.GetConnection();
 // 构造一个初始容量为 10 的空列表。
 List list = new ArrayList();// 表示占位符的第一个位置
 int index = 1;pstmt = connection.prepareStatement(sql);
// 判断所填充的占位符是否有值;判断集合的标准方式
 if (params != null && !params.isEmpty()) {
 for (int i = 0; i < params.size(); i++) {// 使用给定对象设置指定参数的值。第二个参数必须是Object类型
 pstmt.setObject(index++, params.get(i));}
 }// 返回查询结果
 resultset = pstmt.executeQuery();// 获取列的相关信息
 java.sql.ResultSetMetaData metdata = resultset.getMetaData();// 获取列数
 int col_lenth = metdata.getColumnCount();
 while (resultset.next()) {// 通过反射机制创建一个实例
 T resultObject = cls.newInstance();
 for (int i = 0; i < col_lenth; i++) {
 String cols_name = metdata.getColumnName(i + 1);
 Object cols_value = resultset.getObject(cols_name);
 if (cols_value == null) {
 cols_value = “”;
 }// 通过列名获得反射
 Field field = cls.getDeclaredField(cols_name);// 打开javabean的私有访问权限
 field.setAccessible(true);
 field.set(resultObject, cols_value);
 }
 list.add(resultObject);
 }
 //关闭数据库
 MysqlUtil.releaseConn();
 return list;
 }
 /**• 查询返回多条查询记录
• 
• @param sql
• @param params
• @return
• @throws SQLException
 */
 public static List<Map<String, Object>> findMoreResult(String sql,
 List params) throws SQLException {
 //加载数据库驱动
 new MysqlUtil();
 //连接数据库
 MysqlUtil.GetConnection();
 System.out.println(“JJ”);
 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));// 使用给定对象设置指定参数的值。第二个参数必须是
 // Object类型
 }
 }
 try {
 resultset = pstmt.executeQuery();// 返回查询结果
 } catch (Exception e) {
 System.out.println(“Error1!”);// 调试用
 }
 ResultSetMetaData metdata = resultset.getMetaData();// 获取列的相关信息
 int col_lenth = metdata.getColumnCount();// 获取列数
 System.out.println(“数据表列数为:” + col_lenth);// 调试用
 while (resultset.next()) {
 Map<String, Object> map = new HashMap<String, Object>();
 for (int i = 0; i < col_lenth; i++) {
 String cols_name = metdata.getColumnName(i + 1);// 获取列的名称,列从1开始
 Object cols_value = resultset.getObject(cols_name);
 if (cols_value == null) {
 cols_value = “”;
 }
 map.put(cols_name, cols_value);
 }
 list.add(map);
 }
 //关闭数据库
 MysqlUtil.releaseConn();
 return list;
 }/**
• jdbc的封装可以使用反射机制来封装 使用泛型方法
• 
• @param sql
• @param params
• @param cls
• @return
• @throws Exception
 */
 public static T findSimpleRefResult(String sql, List params,
 Class cls) throws Exception {
 //加载数据库驱动
 new MysqlUtil();
 //连接数据库
 MysqlUtil.GetConnection();
 T resultObject = null;// 表示占位符的第一个位置
 int index = 1;
 pstmt = connection.prepareStatement(sql);// 判断所填充的占位符是否有值;判断集合的标准方式
 if (params != null && !params.isEmpty()) {
 for (int i = 0; i < params.size(); i++) {// 第一个是指你SQL语句中的第几个参数,第二个是要设置的值
 pstmt.setObject(index++, params.get(i));
 }
 }// 返回查询结果
 resultset = pstmt.executeQuery();// 获取列的相关信息
 java.sql.ResultSetMetaData metdata = resultset.getMetaData();// 获取列数
 int col_lenth = metdata.getColumnCount();
 while (resultset.next()) {// 通过反射机制创建一个实例
 resultObject = cls.newInstance();for (int i = 0; i < col_lenth; i++) {
 String cols_name = metdata.getColumnName(i + 1);
 Object cols_value = resultset.getObject(cols_name);
 if (cols_value == null) {
 cols_value = “”;
 }
 Field field = cls.getDeclaredField(cols_name);// 打开javabean的私有访问权限
 field.setAccessible(true);
 field.set(resultObject, cols_value);
 }}
 //关闭数据库
 MysqlUtil.releaseConn();
 return resultObject;
 }/**
• 通过反射机制访问数据库
• 
• @param sql
• @param params
• @param cls
• @return
• @throws Exception
 */
 public static List findMoreRefResult(String sql, List params, Class cls) throws Exception {
//加载数据库驱动
 new MysqlUtil();
 //连接数据库
 MysqlUtil.GetConnection();
 // 构造一个初始容量为 10 的空列表。
 List list = new ArrayList();// 表示占位符的第一个位置
 int index = 1;pstmt = connection.prepareStatement(sql);
System.out.println(“MysqlUtil:” + params);
 // 判断所填充的占位符是否有值;判断集合的标准方式
 if (params != null && !params.isEmpty()) {
 for (int i = 0; i < params.size(); i++) {// 使用给定对象设置指定参数的值。第二个参数必须是Object类型
 pstmt.setObject(index++, params.get(i));}
 }// 返回查询结果
 System.out.println(“SHQ”);
 resultset = pstmt.executeQuery();
 // 获取列的相关信息
 java.sql.ResultSetMetaData metdata = resultset.getMetaData();// 获取列数
 int col_lenth = metdata.getColumnCount();
 while (resultset.next()) {// 通过反射机制创建一个实例
 T resultObject = cls.newInstance();
 for (int i = 0; i < col_lenth; i++) {
 String cols_name = metdata.getColumnName(i + 1);
 Object cols_value = resultset.getObject(cols_name);
 if (cols_value == null) {
 cols_value = “”;
 }// 通过列名获得反射
 Field field = cls.getDeclaredField(cols_name);// 打开javabean的私有访问权限
 field.setAccessible(true);
 field.set(resultObject, cols_value);
 }
 list.add(resultObject);
 }
 //关闭数据库
 MysqlUtil.releaseConn();
 return list;
 }/**
• 关闭数据库的链接
• 
*/
 public static void releaseConn() {if (resultset != null) {
 try {
 resultset.close();
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
 if (pstmt != null) {
 try {
 pstmt.close();
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
 if (connection != null) {
 try {
 connection.close();
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
 }/**
• 查询返回总页数
• 
• @param sql
• @param params
• @return int
• @throws SQLException
 */
 public static int cluPage(String sql, List params)
 throws SQLException {
//存储总页数
 int countPage = 0;
 //设置每页显示的记录数
 int size = 10;
 //加载数据库驱动
 new MysqlUtil();
 //连接数据库
 MysqlUtil.GetConnection();
 // 表示占位符的第一个位置
 int index = 1;
 // 此句很重要,需要进行预编译
 pstmt = connection.prepareStatement(sql);
 // 判断所填充的占位符是否有值;判断集合的标准方式
 if (params != null && !params.isEmpty()) {
 for (int i = 0; i < params.size(); i++) {// 第一个是指你SQL语句中的第几个参数,第二个是要设置的值
 pstmt.setObject(index++, params.get(i));
 }
 }// 返回查询结果
 resultset = pstmt.executeQuery();
 if (resultset.next()) {
 int total = resultset.getInt(“total”);
 countPage = (total%size == 0 ? total/size : total/size + 1);
 }
 //关闭数据库
 MysqlUtil.releaseConn();
 System.out.println(“总页数为:” + countPage);
 return countPage;
 }
 /**• 测试模块
• 
• @param args
 */
 public static void main(String[] args) {
 User user = new User();
 user.setUid(“18353102068”);
 user.setLogin_time(“1”);
 user.setOut_time(“1”);
 user.setLast_time(10);
 System.out.println(new UserDao().add(user));
 }
 }

以上介绍了数据库的连接方法及常用的查询操作。

     其中的常量如下定义:

#### Const.java

package cn.edu.ujn.base;
public class Const {
 // 定义数据库的IP
 public final static String IP = “localhost”;
 // 定义数据库的端口
 public final static String DBPORT = “3308”;
 // 定义数据库的名称
 public final static String DBNAME = “lab”;
 // 定义数据库的用户名
 public final static String USERNAME = “lmapp”;
 // 定义数据库的密码
 public final static String PASSWORD = “lmapp”;
 // 定义数据库的驱动信息
 public final static String DRIVER = “com.mysql.jdbc.Driver”;
 // 定义访问数据库的地址
 public final static String URL = “jdbc:mysql://” + IP + “:” + DBPORT + “/” + DBNAME;
 }