您的位置:首页 > 编程语言

JDBC之使用继承简化代码量

2017-07-29 10:54 417 查看
1、新建一个名为AbstractDao的抽象类

package cn.itcast.jdbc.dao.refactor;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import cn.itcast.jdbc.JdbcUtils;
import cn.itcast.jdbc.dao.DaoException;

/**
* 抽象的公共的Dao
*/
public abstract class AbstractDao {

public int update(String sql, Object[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
for(int i = 0; i < args.length; i ++) {
ps.setObject(i + 1, args[i]);
}
return ps.executeUpdate();
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
} finally {
JdbcUtils.free(rs, ps, conn);
}

}

}
2、新建一个类继承AbstractDao
package cn.itcast.jdbc.dao.refactor;

import cn.itcast.jdbc.domain.User;

/**
* 创建Dao的具体实现
*/
public class UserDaoImpl extends AbstractDao {

/**
* 执行删除操作
* @param user
*/
public void delete(User user) {
String sql = "delete from user where id = ?";
Object[] args = new Object[]{user.getId()};
super.update(sql, args);
}

/**
* 更新操作
* @param user
*/
public void update(User user) {
String sql = "update user set name=?, birthday=?, "
+ "money=? where id = ?";
Object[] args = new Object[]{user.getName(), user.getBirthday(),
user.getMoney(), user.getId()};
//调用父类的更新方法
super.update(sql, args);
}
}
3、编写测试类进行测试
package cn.itcast.jdbc.dao.refactor;

import org.junit.Before;
import org.junit.Test;

import cn.itcast.jdbc.domain.User;

public class TestRefactor {

private UserDaoImpl userDaoImpl;
private User user;

@Before
public void init() {
userDaoImpl = new UserDaoImpl();
user = new User();
user.setId(1);
user.setBirthday(new java.sql.Date(System.currentTimeMillis()));
user.setMoney(23f);
user.setName("kaka");
}

@Test
public void testUpdate() {
userDaoImpl.update(user);
}

@Test
public void testDelete() {
userDaoImpl.delete(user);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbc 继承