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;
}
}
BaseDao
最新推荐文章于 2018-09-17 12:30:24 发布