自己写的Jdbc BaseDao 的简单封装

编程技术  /  houtizong 发布于 3年前   74

这是一个简单的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 blocke.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 blocke.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;}}
 



 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客