博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用JDBC实现数据访问对象层(DAO)
阅读量:5337 次
发布时间:2019-06-15

本文共 4300 字,大约阅读时间需要 14 分钟。

JAVA是面向对象的语言,开发者在操作数据的时候,通常更习惯面对一个特定类型的对象,如一个用户就是一个

User类的对象。DAO层需要做的,就是为上层提供充分的对象支持,让上层再也看不到具体的数据,而是一个个活生生的对象。

增加,删除,查询和修改操作是DAO需要做的最基本的4项操作。查询一般需要提供遍历查询和id查询,对于遍历查询,DAO需要提供

User泛型的list对象,对于id查询则提供已经装配好数据的User对象,至于增加和修改操作,上层一般会提供一个User对象,DAO把
User对象中的数据使用Insert语句插入到表格中。删除操作则只需提供一个id即可

class User{	private long id;	private String name;	private String gender;  public User(){	super();  }  public User(long id,String name,String gender){	super();	this.id = id;	this.name = name;	this.gender = gender;	}	//get,set方法  }    //DAO类  public class jdbcDao{	static{		try{			Class.forName("com.mysql.jdbc.Driver");		}catch(Exception e){		e.printStackTrace();			}		}	private Connection  getConn(){		try{			return DriverManager.getConnection("jdbc:mysql://localhost:3306:xe","root","password");			}catch(Exception e){			e.printStackTrace();			}		}		return null;	}	private void release(ResultSet rs,Statement ps,Connection conn){		if(rs!=null){			try{				rs.close();			}catch(Exception e){				e.printStackTrace();			}		}		if(ps!=null){			try{				ps.close();			}catch(Exception e){				e.printStackTrace();			}		}		if(conn!=null){			try{				conn.close();			}catch(Exception e){				e.printStackTrace();			}		}	}	//用ID获取用户对象	public User getUserById(long id){		ResultSet rs = null;		PreparedStatement ps = null;		Connection conn = null;		String sql = "select * from user where id = ?";		try{			conn = this.getConnection();			ps = conn.prepareStatement(sql);			ps.setLong(1,id);			rs = ps.executeQuery();			if(rs.next()){				//如果存在,则直接构建并返回用户对象				User user = new User(rs.getLong("id"),rs.getString("name"),rs.getString("gender"));				return user;			}		}catch(Exception e){			e.printStackTrace();		}finally{			this.release(rs,ps,conn);		}		return null;	}	//查询所有用户	public List
getAllUsers(){ List
list = new ArrayList
(); ResultSet rs = null; PreparedStatement ps = null; Connection conn = null; String sql = "select * from user "; try{ conn = this.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); //循环添加用户对象 while(rs.next()){ User user = new User(rs.getLong("id"),rs.getString("name"),rs.getString("gender")); list.add(user); } }catch(Exception e){ e.printStackTrace(); }finally{ this.release(rs,ps,conn); } return list; } //修改用户数据 public User updateUser(User user){ PreparedStatement ps = null; Connection conn = null; String sql = "update user set id =?,name=?,gender=?"; try{ conn = this.getConnection(); conn.setAutoCommit(false); ps = conn.prepareStatement(sql); ps.setLong(1,user.getId()); ps.setString(2,user.getName()); ps.setString(3,user.getGender()); int rst = ps.executeUpdate(); if(rst>0){ return new User(user.getId(),user.getName(),user.getGender()); } conn.commit(); }catch(Exception e){ e.printStackTrace(); try{ conn.rollback(); }catch(Exception e1){ e1.printStackTrace(); } }finally{ this.release(null,ps,conn); } return null; } } //删除用户数据 public boolean deleteUser(long id){ PreparedStatement ps = null; Connection conn = null; String sql = "delete from user where id =?; try{ conn = this.getConnection(); conn.setAutoCommit(false); ps = conn.prepareStatement(sql); ps.setLong(1,user.getId()); ps.setString(2,user.getName()); ps.setString(3,user.getGender()); int rst = ps.executeUpdate(); if(rst>0){ return user; } conn.commit(); }catch(Exception e){ e.printStackTrace(); try{ conn.rollback(); }catch(Exception e1){ e1.printStackTrace(); } }finally{ this.release(null,ps,conn); } return null; } } //插入用户数据 public User insertUser(User user){ PreparedStatement ps = null; Connection conn = null; String sql = "insert into user values(?,?,?)"; try{ conn = this.getConnection(); conn.setAutoCommit(false); ps = conn.prepareStatement(sql); ps.setLong(1,user.getId()); ps.setString(2,user.getName()); ps.setString(3,user.getGender()); int rst = ps.executeUpdate(); if(rst>0){ return user; } conn.commit(); }catch(Exception e){ e.printStackTrace(); try{ conn.rollback(); }catch(Exception e1){ e1.printStackTrace(); } }finally{ this.release(null,ps,conn); } return null; } } } }

  

转载于:https://www.cnblogs.com/yzqm666/p/5910581.html

你可能感兴趣的文章
Java中的编码
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
单例模式的几种实现方式及对比
查看>>
邓白氏编码 申请
查看>>
Linux远程登录
查看>>