完成整个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假设项目 ...
随机推荐
- 第六课 touch事件
1.移动端页面在PC上浏览时,限制宽度的方法: 2.移动端页面切换设备时自动刷新页面的方法: 3.touch事件 touchstart:当手指触摸屏幕时触发.通过addEventListener添加移 ...
- Oracle 和 SqlServer 的区别
--sql server 与 oracle的区别: --DBMS 数据库管理系统--1.数据类型不同. --sql server 的数据类型:int ,smallint ,char,var ...
- H5(一)
HTML5目前最新的规范(标准)是2014年10月推出 2005年左右出现HTML5版本(非标准) W3C组织(两个组织定义H5规范) 学习(研究)HTML5是学习未来(将来主流) ...
- 【leetcode】Longest Substring Without Repeating Characters
题目描述: Given a string, find the length of the longest substring without repeating characters. For exa ...
- tomcat实现域名访问步骤
1.找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开: 2.修改tomcat的监听端口为80端口: 3.将内容中的 localhost 替换成你想修改的IP地址或者域 ...
- Spring MVC重定向和转发及异常处理
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
- linux高级编程补充知识
F: 计算机系统结构: ------------------------------- 应用程序 ----------------- | 库函数 -------------------------- ...
- Windows安装程序 报错 “已安装了较新版本” 导致无法安装程序的解决方法
打开注册表 HKEY_CURRENT_USER\Software\Microsoft\Installer\Products ,“查找”程序名称 如果有程序名和安装程序相同的 ,删除整个 项 ! 然后就 ...
- Ubuntu配置Tomcat9非root用户启动
unix类系统的root用户具有极大的权利,所以很多时候我们不希望程序以root身份启动,这也就是配置Tomcat以指定身份(非root)启动的初衷,虽然也没人来攻击我的服务器,但本着学习学习的目的, ...
- 苹果safari浏览器window.open问题
现象:在做项目的过程中,使用window.open打开新窗口,在windows系统的ie,firefox,chrome浏览器上测试均没有问题,在苹果系统的safari浏览器上发现有些window.op ...