BaseDao的封装

package com.lovo.dao;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.lovo.po.PO;
import com.lovo.po.UserPO;
import com.lovo.util.DBUtil;

public class  BaseDao {

 // 连接对象
 protected Connection con;

 // 操作对象
 protected PreparedStatement pst;

 // 结果集对象
 protected ResultSet rs;

 // 得到连接的方法
 protected Connection getConnection() {

  return DBUtil.getConnection();
 }

 // 关闭连接的方法
 protected void close() {
  try {

   if (rs != null) {
    rs.close();
   }
   if (pst != null) {
    pst.close();
   }
   if (con != null) {
    con.close();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 // 查询的一种万能的方法,利用反射,参数是sql语句 类模板,值列表

 protected List getPoList(String sql, Class cla, List valueList) {
 
  List list = new ArrayList();
               con = this.getConnection();
  try {
           
   
   // 操作sql
   pst = con.prepareStatement(sql);

   // 如果valuelist不为空的话,则利用setObject方法设置占位符
   if (valueList != null) {

    for (int i = 0; i < valueList.size(); i++) {

     pst.setObject(i + 1, valueList.get(i));

    }

   }

   // 执行sql语句
   rs = pst.executeQuery();

   // 构建对象的list集合
   while (rs.next()) {

    // 得到对象的实例
    Object poObject = cla.newInstance();
                    PO po  = (PO)poObject;
    // 得到属性的集合
    Field[] field = cla.getDeclaredFields();
    for (int i = 0; i < field.length; i++) {

    
     // 得到所有的属性
     Field temp = field[i];

     // 去掉访问修饰 限制
     temp.setAccessible(true);

     // 得到属性名
     String fildName = temp.getName();

     // 将属性的值设置到po对象中,利用getObject方法得到数据库中的值
     temp.set(po, rs.getObject(fildName));
   
     

    }
    
     list.add(po);
   }

  } catch (Exception e) {

   e.printStackTrace();
  }

  return list;

 }

 

 

 // 增删改业务的封装。参数是sql和填充占位符用的 参数对象数组
   protected int executeUpdate(String sql, Object[] param) {
  int j = 0;
  // 建立连接
  con = this.getConnection();

  // 预编译sql
  try {
   pst = con.prepareStatement(sql);

   if (param != null) {

    for (int i = 0; i < param.length; i++) {
     // 设置占位符

     pst.setObject(i + 1, param[i]);
    }

   }

   j = pst.executeUpdate();

  } catch (Exception e) {

   e.printStackTrace();
  }

  return j;

 }

}

你可能感兴趣的:(java,DAO,sql,J#,Gmail)