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 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);
}
}
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);
}
}
相关文章推荐
- 使用spring jdbc template简化jdbc数据库操作实例代码
- 使用元数据简化jdbc代码---更新操作
- 使用元数据简化jdbc代码---查询操作(用到反射)
- 使用工具类来简化代码JDBCUtils
- 使用元数据简化jdbc代码---查询操作(用到反射)
- JDBC之使用SimpleJdbcTemplate和泛型技术简化代码
- 使用工具类来简化代码JDBCUtils
- 使用元数据简化jdbc代码
- 使用工具类来简化代码JDBCUtils
- 使用元数据简化jdbc代码
- 深入体验JavaWeb开发内幕——使用元数据简化JDBC代码
- 使用元数据简化jdbc代码
- 使用 元数据简化JDBC代码
- 合理使用“.NET 扩展方法”来简化代码(例子:空值判断,利用扩展方法实现LINQ操作符ForEach)
- 19_传智播客JDBC_使用DAO工厂模式(代码超经典)3 之关于初始化过程
- 使用匿名委托,Lambda简化多线程代码
- 使用bitset与bitfield简化代码
- 使用匿名委托,Lambda简化多线程代码
- 简化ActivityIndicatorView的创建和使用代码
- 使用Spring的jdbcTemplate进一步简化JDBC操作