基于baseDAO基类的数据库持久化层

这篇博客介绍了如何使用Java实现基于DAO模式的基础CRUD操作。通过`baseDAO`类为所有对象提供通用的数据库交互方法,然后针对特定对象如`User`创建对应的`userDAO`类进行扩展,实现增删改查的功能。博客中详细展示了`baseDAO`类的构造和方法,以及`userDAO`类如何继承并实现具体操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述
baseDAO定义了可以用于所有类的基本的CRUD操作,
但是由于不同的对象,有不同的sql语句
不同的bean对象就要使用不同的DAO层来操作,
比如bean里面有个book对象,就要创建一个bookDAO类来实现对与book对象的CRUD,

bean层
在这里插入图片描述

DAO层

baseDAO类

package DAO;

import java.lang.reflect.ParameterizedType;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class baseDAO<T> {
	Class<T> type;
	QueryRunner qr=new QueryRunner();
	baseDAO(){
		
		ParameterizedType Ptype=(ParameterizedType)this.getClass().getGenericSuperclass();
		 type=(Class<T>) Ptype.getActualTypeArguments()[0];	
	}
	
	int addbean(String sql,Object...params){
		Connection conn=JDBCutils.getConnection();
		int result=0;
		try {
			result=qr.execute(conn, sql, params);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			DbUtils.closeQuietly(conn);
		}
		return result;	
	}
	
	int deletebean(String sql,Object...params){
		Connection conn=JDBCutils.getConnection();
		int result=0;
		try {
			result=qr.execute(conn, sql, params);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			DbUtils.closeQuietly(conn);
		}
		return result;		
	}
	
	int updatebean(String sql,Object...params){
		Connection conn=JDBCutils.getConnection();
		int result=0;
		try {
			result=qr.execute(conn, sql, params);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			DbUtils.closeQuietly(conn);
		}
		return result;		
	}
	
	T getbean(String sql,Object...params) {
		Connection conn=JDBCutils.getConnection();
		T result=null;
		try {
			result=qr.query(conn, sql, new BeanHandler<T>(type),params);
			
		} catch (SQLException e) {
			
			e.printStackTrace();
			
		}
		
		return result;
		
	}
	
	List<T> getbeanlist(String sql,Object...params) {
		Connection conn=JDBCutils.getConnection();
		List<T> result = null;
		try {
			result=qr.query(conn, sql, new BeanListHandler<T>(type),params);
			
		} catch (SQLException e) {
			
			e.printStackTrace();
			
		}
		
		return result;
		
	}

}

userDAO类

package DAO;

import java.util.List;

import bean.User;

public class userDAO extends baseDAO<User>{
	
	public int adduser(User user) {
		int result=0;
		String sql="insert into user(id,name,sex,age)values(?,?,?,?);";
		Object[] params= {user.getId(),user.getName(),user.getSex(),user.getAge()};
		result=addbean(sql, params);
		
		return result;
		
	}
	
	public int deleteuser(User user) {
		int result=0;
		String sql="delete from user where id=?;";
		Object[] params= {user.getId()};
		result=deletebean(sql, params);
		
		return result;
		
	}
	
	
	public int updateuser(User user) {
		int result=0;
		String sql="UPDATE user name=?,age=?,sex=? WHERE id=?;";
		Object[] params= {user.getName(),user.getAge(),user.getSex(),user.getId()};
		result=updatebean(sql, params);
		return result;
		
	}
	
	public User getuser(User user) {
		String sql="select * from user  WHERE id=?;";
		Object[] params= {user.getId()};
		user=getbean(sql,params);
		return user;
		
	}
	
	public List<User> getuserList(User user) {
		String sql="select * from user  WHERE id=?;";
		Object[] params= {user.getId()};
		List<User> result;
		result=getbeanlist(sql,params);
		return result;
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值