使用JDBC实现数据访问对象层(DAO)代码示例

作者:少帅java 时间:2021-11-12 23:33:46 

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<User> getAllUsers(){
 List<User> list = new ArrayList<User>();
 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;
  }
 }
}
}

来源:http://www.cnblogs.com/yzqm666/p/5910581.html

标签:jdbc,dao
0
投稿

猜你喜欢

  • Hibernatede 一对多映射配置方法(分享)

    2021-08-27 02:26:32
  • Java编程倒计时实现方法示例

    2021-05-31 06:30:11
  • C#多线程中的异常处理操作示例

    2023-07-16 06:10:10
  • Spring5学习之基础知识总结

    2021-08-16 02:19:15
  • spring boot使用logback实现多环境日志配置详解

    2022-10-03 20:38:24
  • SpringMVC一步到位精通拦截器

    2023-11-25 01:47:45
  • C语言new操作的安全性分析

    2021-09-07 05:22:20
  • Java内存溢出案例模拟和原理分析过程

    2023-04-09 07:27:48
  • SpringBoot服务开启后通过端口访问无反应的解决

    2022-12-11 03:57:17
  • java接口返回参数按照请求参数进行排序方式

    2023-02-19 07:30:05
  • 如何用120行Java代码写一个自己的区块链

    2023-07-17 03:44:33
  • C#实现简易多人聊天室

    2023-02-06 06:09:47
  • Android实现声音采集回声与回声消除

    2022-09-28 12:13:17
  • OpenCV画任意圆弧曲线

    2023-06-22 19:28:44
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法

    2023-10-14 19:34:51
  • Javaweb 鼠标移入移出表格颜色变化的实现

    2021-08-31 00:03:08
  • Java中数组在内存中存放原理的讲解

    2022-12-10 03:48:35
  • Android自定义控件ViewGroup实现标签云(四)

    2021-11-30 14:58:36
  • Springboot创建项目的图文教程(idea版本)

    2022-09-30 13:30:17
  • Windows7下的Java运行环境搭建过程图解

    2022-03-14 19:40:59
  • asp之家 软件编程 m.aspxhome.com