web连接数据库的Dao类(mysql数据库,另外需要直连插件)

package Dao;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

 

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class BaseDao {
 
 static MysqlDataSource ds;
 
 static{
  ds = new MysqlDataSource();
  ds.setServerName("localhost");
  ds.setDatabaseName("company");
  ds.setUser("root");
  ds.setPassword("123456");
  ds.setPort(3306);
 }
 
 protected Connection getConnection() {
  try {
   return ds.getConnection();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
 /**
  * 关闭查询连接
  * @param rs
  * @param st
  * @param c
  */
 protected void closeResource(ResultSet rs) {
  try {
   Statement st = rs.getStatement();
   Connection c = st.getConnection();
   
   rs.close();
   st.close();
   c.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 /**
  * 关闭增删改连接
  * @param rs
  * @param st
  * @param c
  */
 protected void closeResource(ResultSet rs,Statement st,Connection c) {
  try {
   if (rs!=null){rs.close();}
   if (st!=null){st.close();}
   if (c!=null){c.close();}
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 /**
  * 执行增删改
  * */
 public int executeUpdate(String sql,Object...params){
  Connection c = null;
  PreparedStatement pst = null;
  int ret = 0;
  
  try {
   c = getConnection();
   pst = c.prepareStatement(sql);
   if (params!=null && params.length>0){
    for (int i = 0; i < params.length; i++) {
     pst.setObject(i+1, params[i]);
    }
   }
   ret = pst.executeUpdate();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   closeResource(null,pst,c);
  }
  
  return ret;
 }
/**
 * 执行查询
 * @param sql
 * @param params
 * @return
 */
 public ResultSet executeQuery(String sql,Object...params){
  Connection c = null;
  PreparedStatement pst = null;
  ResultSet rs = null;
  try {
   c = getConnection();
   pst = c.prepareStatement(sql);
   if (params!=null && params.length>0){
    for (int i = 0; i < params.length; i++) {
     pst.setObject(i+1, params[i]);
    }
   }
   rs = pst.executeQuery();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  return rs;
 }
 /**
 
  * @param entityClass实体类 (类.class)
  * @param sqlSQL语句 (String)
  * @param params替换参数
  * @return
  */
 public List<Object> executeQuery(Class entityClass,String sql,Object...params){
  ResultSet rs = null;
  List<Object> list = null;
  try {
   rs = executeQuery(sql,params);
   //通过反射封装对象
   if (rs!=null){
    list = new ArrayList<Object>();
    while(rs.next()){
     Object entity = entityClass.newInstance();//执行该方法默认会调用类的无参构造方法
     /*Field应该是字段*/
     for(Field f: entityClass.getDeclaredFields()){
      f.setAccessible(true);/*所有字段包括私有的*/
      for(int i=1; i<=rs.getMetaData().getColumnCount();i++){/*循环查询得到的数据,得到列名*/
      /* System.out.println("/r/t------------------"+rs.getMetaData().getColumnName(i).toLowerCase()+"/r/t------------------");
       */if (f.getName().toLowerCase().equals(rs.getMetaData().getColumnName(i).toLowerCase())){
        /*列名如果与实体的属性相同,就赋值*/
        f.set(entity, rs.getObject(i));
        /*System.out.print(rs.getObject(i));*/
       }
      }
     }
     
     list.add(entity);  /*添加实体到集合*/   
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   closeResource(rs);
  }
  
  return list;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值