当前位置:首页 > 开发 > IT生活 > 正文

自己写的Jdbc BaseDao 的简单封装

发表于: 2010-09-13   作者:cntaizi   来源:转载   浏览次数:
摘要: 这是一个简单的jdbcBaseDao的封装。自己写的。面前能完成的一些功能,自己还算满意。正想搞个通用分页的。坛子里找了下,发现有个可以,但是还是被人说出了很多缺点。。。。所以,自己也有点信心不足了,特意发出来求虐!!!希望大家把缺点说下,我改正!!谢谢 package com.demo.dao; import java.lang.reflect.Field; import java.l

这是一个简单的jdbcBaseDao的封装。

自己写的。

面前能完成的一些功能,自己还算满意。正想搞个通用分页的。

坛子里找了下,发现有个可以,但是还是被人说出了很多缺点。。。。

所以,自己也有点信心不足了,特意发出来求虐!!!

希望大家把缺点说下,我改正!!谢谢

package com.demo.dao;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public  class BaseDao {
	/**
	 * 获得连接
	 * @return
	 * @throws Exception
	 */
	public Connection getConn()throws Exception{
		
		/*			-***********************-mysql数据库-************************/
		Class.forName("com.mysql.jdbc.Driver");
		String uri="jdbc:mysql://localhost:3306/test?&useUnicode=true&characterEncoding=UTF-8";
		return DriverManager.getConnection(uri,"root","123");
		
		
		/*		   -***********************sqlserver2005数据库-*******************
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		String uri="jdbc:sqlserver://127.0.0.1:1433;DataBaseName=master";
		return DriverManager.getConnection(uri,"sa","123");*/
	}
	
	/**
	 * 关闭连接
	 * @param rs
	 * @param sm
	 * @param conn
	 */
	public void closeAll(ResultSet rs,Statement sm,Connection conn)throws Exception{
		if(rs!=null) rs.close();
		if(sm!=null) sm.close();
		if(conn!=null) conn.close();
	}
	
	/**
	 * 增加,删除,修改
	 * @param sql
	 * @param args
	 * @return
	 */
	public boolean executeUpdate(String sql,Object[] args){
		boolean flag=false;
		Connection conn=null;
		PreparedStatement sm=null;
		try {
			conn=this.getConn();
			sm=conn.prepareStatement(sql);
			if(conn != null){
				for (int i = 0; i < args.length; i++) {
					sm.setObject(i+1, args[i]);
				}
			}
			
			if(sm.executeUpdate() > 0){
				flag = true;
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			try {
				this.closeAll(null, sm, conn);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return flag;
	}
	
	/**
	 * 查询方法
	 * @param sql
	 * @param args
	 * @return
	 */
	public List executeQuery(String sql,Object[] args,Class clazz){
		
		List list=new ArrayList();
		Connection conn = null;
		PreparedStatement sm = null;
		ResultSet rs = null;
		try {
			conn = this.getConn();
			sm = conn.prepareStatement(sql);
			if(args != null){
				for (int i = 0; i < args.length; i++) {
					sm.setObject(i+1, args[i]);
				}
			}
			rs=sm.executeQuery();
			while(rs.next()){
			//通过反射得到一个对象
				list.add(this.getObj(clazz, rs));
			}
			
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			try {
				this.closeAll(null, sm, conn);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return list;
	}

	public static Object getObj(Class clazz,ResultSet rs)throws Exception{
		//所有的属性
		Field[] field= clazz.getDeclaredFields();
		Object info= clazz.newInstance();
		for (int i = 0; i < field.length; i++) {
			String name=field[i].getName().toUpperCase();
			//得到方法名
				name="set"+name.charAt(0)+name.substring(1).toLowerCase();
			//得到类型
			Class  c=field[i].getType();
			//得到方法
		    Method method= clazz.getMethod(name, c);
		    //实现方法
		    method.invoke(info, rs.getObject(i+1));
		}
		return info;
	}
	

}
 



 

自己写的Jdbc BaseDao 的简单封装

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
对于hibernate虽然是开源的,但是在实际的使用中,有的开发者还是不愿意放心的使用,首先对于一般的
代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var d
之前发了以个HQLModel(HQL语句生成器)觉得意义不大。最近对数据库操作很感兴趣。 这几天在公司偷
写日期插件主要的2个问题: 1。计算某个月有多少天,2012.9月到底有多少天呢? (new Date(+(new Dat
先上图吧: 功能是: 点击play后三个图片会随机的进行变化, 然后点击相应的底下的stop按钮,相应 的
Demo如下: 客户端: /* * 一个简单的QQ * 2013-8-1 * @李志杰 */ package SimpleQQ_Client; import
前言: Hibernate感觉这个东西还是比较好的,可以自动生成一些大家都写腻了代码。可是它内部原理是
先上图吧: 功能是: 点击play后三个图片会随机的进行变化, 然后点击相应的底下的stop按钮,相应 的
转自:http://www.2cto.com/kf/201404/291555.html 随着学习的深入,我们都想封装自己的Api,但对于
天空中飘着小雨,实在是适合写代码的时节。 1 1 package ch02.chat; 2 3 import java.io.Serializab
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号