完成整个DAO的实现及测试代码
package 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;
} }
User
package cn.itcast.dao; import java.sql.SQLException; import cn.itcast.domain.User; public interface UserDao { public void addUser(User user) throws SQLException; public User getUser(int userId); public void update(User user); public void delete(User user); public User findUser(String userName,String password); }
UserDao
package cn.itcast.dao.impl; import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import cn.itcast.exception.DaoException;
import cn.itcast.jdbc.jdbcUtils; public class UserDaoJdbcImpl implements UserDao { @Override
public void addUser(User user) throws DaoException { 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);
} } @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,money,birthday 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());
} finally {
jdbcUtils.free(rs, ps, conn);
} return user;
} public User mappingUser(ResultSet rs) throws SQLException {
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;
} @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 = ?,money=? where id=?";
ps = conn.prepareStatement(sql);
ps.setString(1, user.getName());
//ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
ps.setFloat(2, user.getMoney());
ps.setInt(3, user.getId()); ps.executeUpdate(); } catch (SQLException e) {
new DaoException(e.getMessage());
} 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());
} finally {
jdbcUtils.free(rs, st, conn);
} } @Override
public User findUser(String userName, String password) { Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
User user = null; try {
conn = jdbcUtils.getConnection();
String sql = "select id,name,money,birthday from user where name = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, userName);
rs = ps.executeQuery(); while (rs.next()) {
user = mappingUser(rs);
} } catch (SQLException e) {
throw new DaoException(e.getMessage());
} finally {
jdbcUtils.free(rs, ps, conn);
} return user;
} }
UserDaoJdbcImpl
package cn.itcast.exception; public class DaoException extends RuntimeException { private static final long serialVersionUID = 1L; public DaoException() {
super();
// TODO Auto-generated constructor stub
} public DaoException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
} public DaoException(String message) {
super(message);
// TODO Auto-generated constructor stub
} public DaoException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
} }
DaoException
package cn.itcast.jdbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class jdbcUtils { private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "123"; private jdbcUtils() { } static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
} public static void free(ResultSet rs, Statement st, Connection conn) { try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally { try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally { try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
} } }
}
jdbcUtils
package cn.itcast.dao; import java.sql.SQLException;
import java.util.Date; import cn.itcast.dao.impl.UserDaoJdbcImpl;
import cn.itcast.domain.User; public class UserTest { /**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException { UserDao userDao = new UserDaoJdbcImpl(); //User user = new User();
//user.setBirthday(new Date());
//user.setName("dao name1");
//user.setMoney(1000.0f); // userDao.addUser(user);
//
// User u = userDao.findUser(user.getName(),null);
// System.out.println(u.getId()); User u = userDao.getUser(1); u.setMoney(2000.0f);
userDao.update(u); User u1 = userDao.getUser(1);
userDao.delete(u1); } }
UserTest
完成整个DAO的实现及测试代码的更多相关文章
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- mysql锁 实战测试代码
存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...
- 使用Microsoft Fakes隔离测试代码
在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的 ...
- iOS开发:XCTest单元测试(附上一个单例的测试代码)
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- 在内核中异步请求设备固件firmware的测试代码
在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...
- x264测试代码
建立一个工程,将头文件,库文件加载到工程,测试代码如下:#include <iostream>#include <string>#include "stdint.h& ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Git合并开发代码分支到测试代码分支
——转载请注明出自天外归云的博客园 用TortoiseGit下载代码到本地 首先需要在本机安装好TortoiseGit.然后在随便哪个路径下比如D盘,右键“Git Clone”: 然后URL处选择项目 ...
- mvn编写主代码与测试代码
maven编写主代码与测试代码 3.2 编写主代码 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(比如jar),而测试代码只在运行测试时用到,不会被打包.默认情况下,Maven假设项目 ...
随机推荐
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- 【转】理解 PHP 依赖注入 | Laravel IoC容器
Laravel框架的依赖注入确实很强大,并且通过容器实现依赖注入可以有选择性的加载需要的服务,减少初始化框架的开销,下面是我在网上看到的一个帖子,写的很好拿来与大家分享,文章从开始按照传统的类设计数据 ...
- HCP查询配置
1.配置命名空间Service里的Search功能为enable以及索引等相关配置 2.配置用户对该命名空间的查询为允许
- HTTP协议请求响应过程和HTTPS工作原理
HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer p ...
- 解决一则enq: TX – row lock contention的性能故障
上周二早上,收到项目组的一封邮件: 早上联代以下时间点用户有反馈EDI导入"假死",我们跟踪了EDI导入服务,服务是正常在跑,可能是处理的慢所以用户感觉是"假死" ...
- 【leetcode】House Robber
题目简述 You are a professional robber planning to rob houses along a street. Each house has a certain a ...
- 【leetcode】Generate Parentheses
题目简述: Given n pairs of parentheses, write a function to generate all combinations of well-formed par ...
- 【Android进阶学习】shape和selector的结合使用(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/732310 ...
- OpneCv2.x 模块结构
转自:http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后 ...
- my links
如何解決MySQL 開動不到的問題 MySQL start fail 10 BEST JQUERY FILE UPLOAD PLUGINS WITH IMAGE PREVIEWS Spring MVC ...