JDBC: DAO&VO

来源:互联网 发布:农产品进出口数据 编辑:程序博客网 时间:2024/06/16 14:15

vo 是对一条记录的数据的封装,其中包括对字段的操作(set  get is 等);

package example.vo;public class User {private int id;private String username;private String password;public int getId(){return id;}public String getUserName(){return username;}public String getPassword(){return password;}public void setId(int id){this.id=id;}public void setUserName(String username){this.username=username;}public void setPassword(String password){this.password=password;}}


dbc 是对数据库操作(连接,关闭)的封装;

package example.dbc;import java.sql.Connection;import java.sql.DriverManager;public class DatabaseConnection {private static final String DBDRIVER = "com.mysql.jdbc.Driver";private static final String DBURL =  "jdbc:mysql://localhost:3306/userinfo";private static final String DBUSER = "root";private static final String DBPASSWORD = "root";private Connection conn;public DatabaseConnection() throws Exception{Class.forName(DBDRIVER);this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);}public Connection getConnection(){return this.conn;        }   public void close() throws Exception{if(this.conn!=null){try {this.conn.close();  } catch (Exception e) {throw e;      }   }  }  }


dao 是一个接口,包括对数据库的一些操作(findById findAll等);

package example.dao;import java.util.List;import example.vo.User;public interface IUserDao {public boolean doCreate(User user) throws Exception;public List<User> findAll(String keyWord) throws Exception;public User findById(int id) throws Exception;public User findByUserName(String username) throws Exception;}


impl 是对dao接口的实现;

package example.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import example.dao.IUserDao;import example.vo.User; public class UserDaoImpl implements IUserDao {private Connection conn = null;private PreparedStatement pstmt = null;public UserDaoImpl (Connection conn) {this.conn = conn;}public boolean doCreate(User user) throws Exception{boolean flag = false;String sql = "insert into userinfo(username,password) values(?,?)";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setString(1, user.getUserName()); this.pstmt.setString(2, user.getPassword());   if (this.pstmt.executeUpdate() > 0){  flag = true;  }   this.pstmt.close();return flag;}public List<User> findAll(String keyWord) throws Exception{List<User> all = new ArrayList<User>();String sql = "select id,username,password from userinfo where id like ? or username like ?";this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setString(1, "%" + keyWord + "%");this.pstmt.setString(2, "%" + keyWord + "%");  ResultSet rs = this.pstmt.executeQuery(); while (rs.next()) {  User user = new User(); user.setId(rs.getInt(1)); user.setUserName(rs.getString(2));   user.setPassword(rs.getString(3));     all.add(user);}  this.pstmt.close(); return all;}public User findById(int id) throws Exception{User user = null;String sql = "SELECT id,username,password FROM userinfo WHERE id=?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setInt(1, id);ResultSet rs = this.pstmt.executeQuery();if (rs.next()) {user = new User();  user.setId(rs.getInt(1)); user.setUserName(rs.getString(2));user.setPassword(rs.getString(3));}  this.pstmt.close(); return user; }public User findByUserName(String username) throws Exception{User user = null;String sql = "SELECT id,username,password FROM userinfo WHERE username=?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setString(1, username);ResultSet rs = this.pstmt.executeQuery();if (rs.next()) {user = new User();  user.setId(rs.getInt(1)); user.setUserName(rs.getString(2));user.setPassword(rs.getString(3));}  this.pstmt.close(); return user;}}


proxy 是对dao接口的代理;

package example.dao.proxy.UserDaoProxy;import java.util.List;  import example.dao.IUserDao; import example.dbc.DatabaseConnection; import example.vo.User; import example.dao.impl.UserDaoImpl;public class UserDaoProxy implements IUserDao{private DatabaseConnection dbc=null;private IUserDao dao=null;              public UserDaoProxy() throws Exception{ this.dbc=new DatabaseConnection();   this.dao=new UserDaoImpl(this.dbc.getConnection());}public boolean doCreate(User user) throws Exception {  boolean flag = false; try {    if (this.dao.findById(user.getId()) == null) {flag = this.dao.doCreate(user); }   } catch (Exception e) {throw e;   }finally{ this.dbc.close();  }    return flag;  }   public List<User> findAll(String keyWord) throws Exception{ List<User> all = null;try{   all = this.dao.findAll(keyWord);  }catch(Exception e){  throw e;   }finally{    this.dbc.close(); }   return all;}public User findById(int id) throws Exception{ User user = null;try{  user = this.dao.findById(id);}catch(Exception e){ throw e;    }finally{  this.dbc.close(); }   return user;  } public User findByUserName(String username) throws Exception{ User user = null;try{  user = this.dao.findByUserName(username);}catch(Exception e){ throw e;    }finally{  this.dbc.close(); }   return user;  } }


factory 是一个工厂类,用于new一个proxy实例;

package example.factory;import example.dao.IUserDao; import example.dao.proxy.UserDaoProxy.*;public class DaoFactory { public static IUserDao getIUserDaoInstance() throws Exception{ return new UserDaoProxy();  } } 


实际操作中只需要引入vo 类和factory 类就可以了。

package example.test;import example.factory.*;import example.vo.*;public class test {public static void main(String[]args){try{User user = DaoFactory.getIUserDaoInstance().findByUserName("Amy");System.out.println(user.getUserName()+user.getId()+user.getPassword());}catch(Exception e){System.out.println("Exception");}}}


0 0
原创粉丝点击