推荐一个优秀的Java的DbDao

背景:当我们需要在某一些地方不试用框架进行dao层操作的时候,我们可以使用下面的简易dao层。

DbDao.java:

package com.x.y;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DbDao {

	 private Connection connect; 
	 private PreparedStatement pstmt;
	 private ResultSet resultSet;
       
	 public DbDao(Connection connect){
      this.connect=connect;
     }
	 public boolean AddSome(String sql, List<Object>params)throws  SQLException {  
         boolean flag = false;  
         int result = -1;  
         pstmt = connect.prepareStatement(sql);
		 int index = 1;  
         if(params != null && !params.isEmpty()){  
             for(int i=0; i<params.size(); i++){  
                 pstmt.setObject(index++, params.get(i));  
             }  
         }
         result = pstmt.executeUpdate();  
        
         flag = result > 0 ? true : false;  
         return flag;  
     } 
	
     public boolean updateByKeyWord(String sql, List<Object>params)throws  SQLException {  
         boolean flag = false;  
         int result = -1;  
         pstmt = connect.prepareStatement(sql);
		 int index = 1;  
         if(params != null && !params.isEmpty()){  
             for(int i=0; i<params.size(); i++){  
                 pstmt.setObject(index++, params.get(i));  
             }  
         }
         result = pstmt.executeUpdate();  
        
         flag = result > 0 ? true : false;  
         return flag;  
     }  
     public boolean updateBySql(String sql) throws SQLException {
    	 boolean falg = false;
    	 int a=0;
    	   
			pstmt = connect.prepareStatement(sql);
			a=pstmt.executeUpdate();
	
		    if (a>=1) {
			   falg=true;
		    }
    	 return falg;
	}
     
  
   public boolean deleteBySql(String sql)throws SQLException{
	   boolean falg = false;
	   int a=0;
	   pstmt = connect.prepareStatement(sql);
	   falg=pstmt.execute();
	   return falg;
	 	
	   }
      public ResultSet getMessage(String sql)throws SQLException{
	 	
	 		Statement statement=connect.createStatement();
	 		resultSet=statement.executeQuery(sql);
	 		
	        return resultSet;
	 	
	   }
   
          public <T> T findOne(String sql, List<Object> params,  
             Class<T> cls )throws Exception{  
         T resultObject = null;  
         int index = 1;  
         pstmt = connect.prepareStatement(sql);  
         if(params != null && !params.isEmpty()){  
             for(int i = 0; i<params.size(); i++){  
                 pstmt.setObject(index++, params.get(i));  
             }  
         }  
         resultSet = pstmt.executeQuery();  
         ResultSetMetaData metaData  = resultSet.getMetaData();  
         int cols_len = metaData.getColumnCount();  
         while(resultSet.next()){  
             //通过反射机制创建一个实例  
        	
             resultObject = cls.newInstance();  
             for(int i = 0; i<cols_len; i++){  
                 String cols_name = metaData.getColumnName(i+1);  
                 Object cols_value = resultSet.getObject(cols_name);  
                 if(cols_value == null){  
                     cols_value = "";  
                 }  
                 Field field = cls.getDeclaredField(cols_name);  
                 field.setAccessible(true); //打开javabean的访问权限  
                 field.set(resultObject, cols_value);  
             }  
         }  
         if (resultObject==null) {
			System.out.println("ss");
		}
         return resultObject;  
   
     }  
     
     public <T> List<T> findMore(String sql, List<Object> params,  
             Class<T> cls )throws Exception {  
         List<T> list = new ArrayList<T>();  
         int index = 1;  
         pstmt = connect.prepareStatement(sql);  
         if(params != null && !params.isEmpty()){  
             for(int i = 0; i<params.size(); i++){  
                 pstmt.setObject(index++, params.get(i));  
             }  
         }  
         resultSet = pstmt.executeQuery();  
         ResultSetMetaData metaData  = resultSet.getMetaData();  
         int cols_len = metaData.getColumnCount();  
         while(resultSet.next()){  
             //通过反射机制创建一个实例  
             T resultObject = cls.newInstance();  
             for(int i = 0; i<cols_len; i++){  
                 String cols_name = metaData.getColumnName(i+1);  
                 Object cols_value = resultSet.getObject(cols_name);  
                 if(cols_value == null){  
                     cols_value = "";  
                 }  
                 Field field = cls.getDeclaredField(cols_name);  
                 field.setAccessible(true); //打开javabean的访问权限  
                 field.set(resultObject, cols_value);  
             }  
             list.add(resultObject);  
         }  
         return list;  
     }  
     public <T> List<T> findAll(String sql,   
             Class<T> cls )throws Exception {  
         List<T> list = new ArrayList<T>();  
         
         pstmt = connect.prepareStatement(sql);  
        
         resultSet = pstmt.executeQuery();  
         ResultSetMetaData metaData  = resultSet.getMetaData();  
         int cols_len = metaData.getColumnCount();  
         while(resultSet.next()){  
             //通过反射机制创建一个实例  
             T resultObject = cls.newInstance();  
             for(int i = 0; i<cols_len; i++){  
                 String cols_name = metaData.getColumnName(i+1);  
                 Object cols_value = resultSet.getObject(cols_name);  
                 if(cols_value == null){  
                     cols_value = "";  
                 }  
                 Field field = cls.getDeclaredField(cols_name);  
                 field.setAccessible(true); //打开javabean的访问权限  
                 field.set(resultObject, cols_value);  
             }  
             list.add(resultObject);  
         }  
         return list;  
     }  
   
     /** 
      * 释放数据库连接 
      */  
     public void releaseconn(){
     	if(resultSet!=null){
     		try {
 				resultSet.close();
 			} catch (SQLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
     	}
     	if(pstmt!=null){
     		try {
 				pstmt.close();
 			} catch (SQLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
     	}
     	if (connect!=null) {
			try {
				connect.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
    
}
}

C3P0Util.java

package com.x.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据库工具类
 * @author liang
 *
 */
public class C3P0Util {
	static ComboPooledDataSource cpds=null;
	static{
		//这里有个优点,写好配置文件,想换数据库,简单
		//cpds = new ComboPooledDataSource("oracle");//这是oracle数据库
		cpds = new ComboPooledDataSource("mysql");//这是mysql数据库
	}
	/**
	 * 获得数据库连接
	 * @return   Connection
	 */
	public static Connection getConnection(){
		try {
			return cpds.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 数据库关闭操作
	 * @param conn  
	 * @param st    
	 * @param pst
	 * @param rs
	 */
	public static void close(Connection conn,PreparedStatement pst,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(pst!=null){
			try {
				pst.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 测试DBUtil类
	 * @param args
	 */
	public static void main(String[] args) {
		Connection conn=getConnection();
		System.out.println(conn.getClass().getName());
		close(conn,null,null);
	}
}

BaseDao.java

package com.x.base;

import java.sql.Connection;
import com.keshe.db.C3P0Util;
import com.keshe.db.DbDao;

public class BaseDao {
	private Connection connect;
	public DbDao dao; 
	public BaseDao() {
		   connect=C3P0Util.getConnection();
		   
		   dao=new DbDao(connect);
	}
	
	public void closeDb(){
		
			dao.releaseconn();
		
	}
	
	public static void main(String[] args) {
		BaseDao dao=new BaseDao();
		Connection connection=dao.connect;
		dao.closeDb();
		System.out.println("ok");
	}
	
}

如何使用?

首先,写一个UserDao.java:

package com.x.dao;

import java.util.List;
import com.x.bean.User;

public interface UserDao  {

	public User login(String username,String password)throws Exception;
	
	public User adminLogin(String username,String password)throws Exception;
	public User getUserInfo(String uid,int state)throws Exception;
	public boolean addUser(User user) throws Exception;
	public boolean updateUser(User user) throws Exception;
	public boolean delateUser(String id) throws Exception;
	public List<User> findAll() throws Exception;
	public List<User> findAllLing() throws Exception;
	public List<User> findAllotTast(int bid,int zhi) throws Exception;
	public User getOne(String uid)throws Exception;
	public void closeDB()throws Exception;
}

然后,实现这个接口,并继承BaseDao

package com.x.dao.impl;

import java.util.ArrayList;
import java.util.List;
import com.x.base.BaseDao;
import com.x.bean.User;
import com.x.dao.UserDao;

public class UserDaoImpl extends BaseDao implements UserDao {

	@Override
	public User login(String username, String password) throws Exception {
		 List<Object> parms=new ArrayList<Object>();
			parms.add(username);
			parms.add(password);
			
			String sql="select * from user where gonghao=? and password =?";
			User user=new User();
			return dao.findOne(sql, parms, user.getClass());
	}

	@Override
	public void closeDB() throws Exception {
		closeDb();
		
	}

	@Override
	public boolean addUser(User user) throws Exception {
		 List<Object> parms=new ArrayList<Object>();
			parms.add(user.getGonghao());
			parms.add(user.getPassword());
			parms.add(user.getName());
			parms.add(user.getBid());
			parms.add(user.getZhi());
			parms.add(user.getPhone());
			parms.add(user.getRuzhi());
			String sql="insert into user(gonghao,password,name,bid,zhi,phone,ruzhi) values(?,?,?,?,?,?,?)";
		    
		return dao.AddSome(sql, parms);
	}

	@Override
	public boolean updateUser(User user) throws Exception {
		 List<Object> parms=new ArrayList<Object>();
			parms.add(user.getGonghao());
			parms.add(user.getPassword());
			parms.add(user.getName());
			parms.add(user.getBid());
			parms.add(user.getZhi());
			parms.add(user.getId());
			String sql="update user set gonghao=?,password=?,name=?,bid=?,zhi=? where id=?";
	      return dao.updateByKeyWord(sql, parms);
	}

	@Override
	public boolean delateUser(String id) throws Exception {
		String sql="delete from user where id='"+id+"'";
		return dao.deleteBySql(sql);
	}

	@Override
	public User getUserInfo(String uid, int state) throws Exception {
		List<Object> parms=new ArrayList<Object>();
		parms.add(uid);

		String sql="select u*.,b.bname,b.bleader   from `user` u,bumen b where b.id=u.bid  and u.gonghao=?  ";
		User user=new User();
		return dao.findOne(sql, parms, user.getClass());
		
	}

	@Override
	public List<User> findAll() throws Exception {
		// TODO Auto-generated method stub
		String sql="select * from user";
		User user=new User();
		return (List<User>) dao.findAll(sql,user.getClass());
	}

	@Override
	public User adminLogin(String username, String password) throws Exception {
		List<Object> parms=new ArrayList<Object>();
		parms.add(username);
		parms.add(password);
		
		String sql="select * from user where gonghao=? and password =? and zhi=4";
		User user=new User();
		return dao.findOne(sql, parms, user.getClass());
		
	}

	@Override
	public List<User> findAllLing() throws Exception {
		
		
		
		String sql="select * from user where zhi=2";
		User user=new User();
		return (List<User>) dao.findAll(sql, user.getClass());
	}

	@Override
	public List<User> findAllotTast(int bid, int zhi) throws Exception {
		String sql;
		List<Object> parms=new ArrayList<Object>();
		if(zhi!=1){
			sql = "select * from user where bid=? and zhi=?";
			parms.add(bid+"");
		}else{
			sql = "select * from user where   zhi=?";
		}
	
		
		parms.add(zhi+1+"");
		User user = new User();
		return (List<User>)dao.findMore(sql, parms, user.getClass());
	}

	@Override
	public User getOne(String uid) throws Exception {
		List<Object> params=new ArrayList<Object>();
		params.add(uid);
		String sql="select * from user where id=?";
		User user=new User();
		return dao.findOne(sql, params, user.getClass());
		
	}

}

转载于:https://my.oschina.net/hengbao666/blog/1551912

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JFrame jf = new JFrame("功能界面"); jf.setBounds(0, 0, 700, 600); jf.setVisible(true); jf.setLayout(null); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b1 = new JButton("图书入库"); b1.setBounds(20, 90, 150, 80); JButton b2 = new JButton("图书查询"); b2.setBounds(20, 210, 150, 80); JButton b3 = new JButton("图书修改"); b3.setBounds(500, 90, 150, 80); JButton b5 = new JButton("办理借阅证登记"); b5.setBounds(20, 330, 150, 80); JButton b6 = new JButton("图书借阅管理"); b6.setBounds(500, 210, 150, 80); JButton b4 = new JButton("图书删除"); b4.setBounds(500, 330, 150, 80); JButton b7 = new JButton("退出系统"); b7.setBounds(560, 20, 90, 30); ta.setBounds(190, 90, 290, 320); txt.setBounds(120,450,300,30); JButton b8 = new JButton("确定"); b8.setBounds(440,450,70,30); JMenuBar menuBar = new JMenuBar(); JMenu menuManage = new JMenu("图书管理"); JMenu menuAbout = new JMenu("关于系统"); JMenuItem item1 = new JMenuItem("图书列表"); menuManage.add(item1); item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFrame frame = new JFrame("图书列表"); frame.setSize(600, 400); frame.setLocationRelativeTo(null); ListPanel listPanel = new ListPanel(); frame.add(listPanel); frame.setVisible(true); } }); ActionListener act = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource().equals(b1)) { insertNewbook(); }else if(e.getSource().equals(b3)) { updatebook(); }else if(e.getSource().equals(b4)) { String bid = txt.getText(); if(bid!=null) { if(dbDao.delelteBook(bid)){ int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION); }else{ int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION); } }else { return; }部分代码,点击图书删除按钮会直接弹窗提示删除失败并且bid是空值,该怎么获取输入的值并将它传入删除图书方法
05-27

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值