BaseDao

package com.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;


public class BaseDao {

	/**
	 *  拿到连接
	 */
	protected Connection conn = DBconn.getInstence().getConnection();
	
	/**
	 * 向数据库添加一条数据
	 * 
	 * @param o
	 *            含有值的对象
	 * @param sql
	 *            添加使用的Sql
	 * @return 受影响行数<br />
	 *         如果大于0,表示添加成功,否则失败
	 */
	protected int insertObject(Object o,String sql){
		// 表示受影响的结果行数
		int result = 0;
		
		try {
			//预编译
			PreparedStatement psta = conn.prepareStatement(sql);
			//获取对象所有字段
			Field[] fields = o.getClass().getDeclaredFields();
			//利用上述所获得的字段对sql语句进行赋值
			for(int i = 1;i<fields.length;i++){
				//保护对象可访问
				fields[i].setAccessible(true);
				//id 自增长,跳过,第1个问号,第二个字段
				psta.setObject(i, fields[i].get(o));
				
			}
			
			result = psta.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		
		return result;
		
	}
	
	/**
	 * 删除或修改
	 * 
	 * @param sql
	 *            删除语句或者修改语句
	 * @param values
	 *            问号的值
	 * @return
	 */
	protected int deleteOrUpdate(String sql,Object...values){
		int result = 0;
		try{
			PreparedStatement psta = conn.prepareStatement(sql);
			for(int i = 0; i < values.length; i++){
				psta.setObject(i+1, values[i]);
			}
			result = psta.executeUpdate();
		}catch(SQLException e){
			e.printStackTrace();
		}
		return result;
	}
	
	/**
	 * 根据条件查询所需数据
	 * 
	 * @param o
	 *            要查询的类型
	 * @param sql
	 * @param values
	 *            如果sql语句中有问号,请添加相应的值
	 * @return 肯定是一个List集合
	 */
	protected Object selectObjects( Object o , String sql , Object...values ){
		List<Object> objs = new ArrayList<Object>();
		Object obj = null;
		try{
			PreparedStatement psta = conn.prepareStatement(sql);
			for(int i = 0;i < values.length; i++){
				psta.setObject(i+1, values[i]);
			}
			ResultSet rs = psta.executeQuery();
			Field[] fields = o.getClass().getDeclaredFields();
			while (rs.next()){
				obj =  o.getClass().newInstance();
				for(int i = 0; i < fields.length; i++){
					fields[i].setAccessible(true);
					fields[i].set(obj, rs.getObject(fields[i].getName()));
				}
				objs.add(obj);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return objs;
	}
	
	/**
	 * 根据SQL语句查询出总数量
	 * @param sql
	 * @param values
	 * @return
	 * 总数量
	 */
	protected int getConunt(String sql,Object... values){
		int count = 0;
		try{
			PreparedStatement psta = conn.prepareStatement(sql);
			for(int i = 0;i < values.length; i++){
				psta.setObject(i + 1, values[i]);
			}
			ResultSet rs = psta.executeQuery();
			if(rs.next()){
				count = rs.getInt(1);
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
		return count;
	}
	
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值