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
- JDBC: DAO&VO
- java中的vo,dao
- jdbc-dao
- JDBC DAO
- PO,VO,BO,DAO,POJO
- PO VO DAO POJO概念
- VO,BO,PO,DAO概念
- PO/VO/DAO/BO/POJO
- VO PO DTO BO DAO . .. . . . . . .
- VO,DAO,BO,ActionForm,Action
- java中的vo 、dto 、dao
- java中的vo 、dto 、dao
- java中的vo 、dto 、dao
- PO、VO、DAO、BO 对象
- java中的vo 、dto 、dao
- PO、VO、DAO、BO、POJO
- DTO DAO VO BO PO POJO区别
- po、vo、bo、dao、pojo的解释
- hdu 5137 2014ACM/ICPC亚洲区广州站K 最短路
- Thread类的join方法使用
- nyoj32组合数(DFS)
- 10种方法使你的IE如现代浏览器一般
- java swing总结
- JDBC: DAO&VO
- 单词查找树的实现
- 10个200万的网络监控摄像机应该配置百兆还是千兆的交换机?
- jsp与service
- 《c++ primer》第10章 泛型算法 学习笔记
- Android双向滑动菜单
- 2.3 寻找发帖水王
- [BZOJ 1103][POI 2007]大都市(DFS求拓扑序+树状数组)
- GIT和SVN之间的五个基本区别