JDBC中的Dao设计模式
2015-09-17 10:19
507 查看
今天也是我第一次写博客,想想还是有些小激动的,但是文中可能有些不足,请指出。Dao设计模式的全称是data access object,DAO模式通过对业务层提供数据抽象层接口。DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作,这样减少了对数据库操作代码,使代码不那么混乱。废话不多说了,直接上代码。
<span style="font-size:18px;">//User对象类 public class User { private int id; private Date birthday; private String name; private float momeny; public float getMomeny() { return momeny; } public void setMomeny(float momeny) { this.momeny = momeny; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } }</span>
<pre name="code" class="java"><span style="font-size:18px;">//UserDao接口 public interface UserDao { /** * 添加用户信息 * @param user * @return */ public int addUser(User user); /** * 删除用户信息 * @param user * @return */ public int deleteUser(User user); /** * 根据用户Id查询用户信息 * @param id * @return */ public User queryUserById(int id); public List<User> queryUserForList(String name); /** * 根据Id来更新用户信息 * @param newInfo * @param id * @return */ public int updateUser(User newInfo,int id); }</span>
<span style="font-size:18px;">/** * Connection连接类,创建和销毁 * @author Smile * */ public final class ConnCreate { static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 连接类 * @param url 数据库的url * @param user 数据库的用户名 * @param pwd 数据库的密码 * @return */ public static Connection getConnection(String url,String user,String pwd){ Connection conn=null; try { conn=DriverManager.getConnection(url,user,pwd); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * 释放资源 * @param conn * @param stmt * @param rs * @throws SQLException */ public static void close(Connection conn,PreparedStatement stmt,ResultSet rs)throws SQLException{ if(conn!=null){ conn.close(); } if(stmt!=null){ stmt.close(); } if(rs!=null){ rs.close(); } } }</span>
<span style="font-size:18px;">public class UserDaoImpl implements UserDao { private Connection conn=null; public UserDaoImpl(Connection conn){ this.conn = conn; } @Override public int addUser(User user) { PreparedStatement stmt=null; int result=0; try { String sql="insert into user_tb(id,name,birthday,momeny)values(?,?,?,?)"; stmt=conn.prepareStatement(sql); stmt.setInt(1, user.getId()); stmt.setString(2, user.getName()); stmt.setDate(3, user.getBirthday()); stmt.setFloat(4, user.getMomeny()); result=stmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { ConnCreate.close(null, stmt, null); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } @Override public int deleteUser(User user) { PreparedStatement stmt=null; int result=0; try { String sql="delete from user_tb where id=?"; stmt=conn.prepareStatement(sql); stmt.setInt(1, user.getId()); result=stmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { ConnCreate.close(null, stmt, null); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } @Override public User queryUserById(int id) { PreparedStatement stmt=null; ResultSet rs=null; User user=null; String sql="slect *from user_db where id=?"; try { stmt=conn.prepareStatement(sql); stmt.setInt(1, id); rs=stmt.executeQuery(); if(rs.next()){ user=new User(); user.setId(rs.getInt(1)); user.setName(rs.getString(2)); user.setBirthday(rs.getDate(3)); user.setMomeny(rs.getFloat(4)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { ConnCreate.close(null, stmt, rs); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return user; } @Override public List<User> queryUserForList(String name) { // TODO Auto-generated method stub return null; } @Override public int updateUser(User newInfo, int id) { PreparedStatement stmt=null; int result=0; try { String sql="update user_db set moeny=?where id=?"; stmt=conn.prepareStatement(sql); stmt.setFloat(1, newInfo.getMomeny()); stmt.setInt(2, id); result=stmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0; } }</span>
<span style="font-size:18px;">/** * 测试类 * @author Smile * */ public class UserDaoTest { public static void main(String[] args) { addUser(); } public static void addUser(){ Connection conn=ConnCreate.getConnection("jdbc:mysql://localhost:3306/user", "root", "8080"); UserDao dao = new UserDaoImpl(conn); User user=new User(); user.setId(1); user.setName("张三"); user.setBirthday(null); user.setMomeny(2443); int result=dao.addUser(user); System.out.println("信息录入"+(result>0?"成功":"失败")); } }</span>以上就是一个简单的Dao设计模式。
相关文章推荐
- windows Server 2008各版本有何区别?
- 机器学习--监督学习(二)
- PHP教程实例:adodb配置与使用
- 学习笔记:Node.js(一)
- 在MAC上查找和设置$JAVA_HOME
- Displaying SharePoint Lists or Libraries in other sites 显示其他站点的List
- “.网络”域名总量TOP12:排名无变化 新网夺冠
- 13星座性格购买iphone6s的搞笑反映
- hdu 5017 模拟退火求最值
- web前端面试题
- Android各大网络请求库的比较及实战
- Android 实现系统深度休眠笔记
- 2015-09-17 001 日志与对话框公用类_public
- iOS 取相册
- jQuery Mobile
- Redhat Linux 6 Ext3 File System Guide
- Bug:编译链接,发现找不到符号,用nm工具查看,发现符号属性有两个分别是U和T
- [python] 0x7 Python Tutorial: Web Scanning and Exploitation
- C语言算法小练习-5
- 删除android系统下app