JDBC Dao的实现与测试
来源:互联网 发布:哈!算法2-伟大思维闪耀 编辑:程序博客网 时间:2024/05/16 09:07
在三层架构中,jdbc属于数据访问层。通过Domain等进行数据传递。
各个层之间最好能相互独立。
建立一个UserDao,通过他来传递对象(Dao:Data Access Object数据访问对象)
//User.java//存储数据的modelpackage cn.itcast.domain;import java.util.Date;public class User { private int id; private String name; private Date birthday; private float money; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; }}
//UserDao.java//Dao interface访问数据库package cn.itcast.jdbc.dao;import cn.itcast.domain.User;public interface UserDao { public void addUser(User user); public User getUser(int userId); public User findUser(String loginNames,String password); public void update(User user); public void delete(User user);}
//UserDaoJdbcImpl.java//UserDao的实现package cn.itcast.dao.Impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import cn.itcast.domain.User;import cn.itcast.jdbc.JdbcUtils;import cn.itcast.jdbc.dao.UserDao;public class UserDaoJdbcImpl implements UserDao { //增 @Override public void addUser(User user) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "insert into user(name,birthday,money)values(?,?,?)"; ps = conn.prepareStatement(sql); ps.setString(1, user.getName()); ps.setDate(2, new java.sql.Date(user.getBirthday().getTime())); ps.setFloat(3, user.getMoney()); ps.executeUpdate(); } catch (SQLException e) { throw new DaoException(e.getMessage(), e); } finally { JdbcUtils.free(rs, ps, conn); } } //根据userId查找user @Override public User getUser(int userId) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; User user = null; try { conn = JdbcUtils.getConnection(); String sql = "select id,name,birthday,money from user where id=?"; ps = conn.prepareStatement(sql); ps.setInt(1, userId); rs = ps.executeQuery(); while (rs.next()) { user = mappingUser(rs); } } catch (SQLException e) { throw new DaoException(e.getMessage(), e); } finally { JdbcUtils.free(rs, ps, conn); } return user; } // 改 @Override public void update(User user) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "update user set name=?,birthday=?,money=? where id=?"; ps = conn.prepareStatement(sql); ps.setString(1, user.getName()); ps.setDate(2, new java.sql.Date(user.getBirthday().getTime())); ps.setFloat(3, user.getMoney()); ps.setInt(4, user.getId()); ps.executeUpdate(); } catch (SQLException e) { throw new DaoException(e.getMessage(), e); } finally { JdbcUtils.free(rs, ps, conn); } } //删 @Override public void delete(User user) { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); String sql = "delete from user where id=" + user.getId(); st.executeUpdate(sql); } catch (SQLException e) { throw new DaoException(e.getMessage(), e); } finally { JdbcUtils.free(rs, st, conn); } } //映射 将结果集映射为User private User mappingUser(ResultSet rs) throws SQLException { User user; user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setMoney(rs.getFloat("money")); user.setBirthday(rs.getDate("birthday")); return user; }}
上面用到的DaoException
以上Dao及其实现已经是比较规范的代码了,可以在较小的程序中使用。
阅读全文
0 0
- JDBC Dao的实现与测试
- JDBC Dao的实现与测试
- Spring与Dao-Jdbc模板-使用Spring的JUnit4测试
- Spring中实现基于Jdbc的DAO
- Jdbc与Dao和Javabean的区别
- Spring与Dao-Jdbc模板实现增删改查
- 传统的JDBC实现的DAO插入和读取
- hibernate与spring的jdbc,dao的区别
- 使用反射技术实现对JDBC dao的简化
- **//java之jdbc+DAO实现学生信息的增删改**
- JDBC:DAO(三)利用queryRunner实现一个较好的DAO架构
- DAO设计模式的介绍与实现
- spring的DAO编程(jdbc)
- 第十八章 完成整个DAO的实现及测试代码
- JDBC:DAO(二)DAO实现增删改查(CRUD)
- JDBC高级应用 - DAO模式与JavaBean
- JDBC之将Dao的实现通过配置文件切换成Spring的实现
- MySql与oracle的JDBC测试程序
- 数据挖掘10种常用方法
- GAMIT处理北斗数据记录
- 马化腾的格局:最后都是人品的竞争
- 苏宁开除校招涉嫌歧视大学生员工;搜狗赴美IPO拟募资最高6亿美元;特斯拉召回11000辆Model X SUV丨价值早报
- 机器学习 第十周 总结 知识点
- JDBC Dao的实现与测试
- Android so库的了解
- 2018秋招笔试 爱奇艺20171014 字符串价值
- opencv-python(12):图像梯度(高通滤波)
- 爱奇艺2017校招-Java开发-在线算法笔试题-NIM博弈问题,牛牛羊羊吃草
- Mysql 没有nvl()函数,却有一个类似功能的函数ifnull();
- sscanf使用笔记
- Django学习笔记(六)--models与mysql数据库接入
- Qt学习之-简易音乐播放器