zoukankan      html  css  js  c++  java
  • 如何使用JDBC实现数据访问对象层(DAO)

    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;
    			}
    		}
    
    	}
      }
    

      

  • 相关阅读:
    ajax方式提交表单数据并判断当前注册用户是否存在
    Javaweb实现对mongodb的增删改查(附带源代码)
    Navicat导入sql server数据库
    教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)
    八中常用的算法设计
    物体高亮与半透明
    unity发布ios高通AR的问题
    UITabView
    iOS Undefined ..Arm64问题解决
    unityweb Request请求
  • 原文地址:https://www.cnblogs.com/yzqm666/p/5910581.html
Copyright © 2011-2022 走看看