Template Method模式的应用场景是:
1. 你想将相同的算法放在一个类中,将算法变化的部分放在子类中实现。
2. 子类公共的算法应该放在一个公共的类中,避免代码重复。
Template Method模式可以限制所留下的虚方法只对其继承类可见,外部使用者不一定能够直接使用这些虚方法。
下面是示例代码:
public abstract class BaseDao {
/**
* 增,删,改方法
* @param sql
* @param args sql参数
* @return
* @throws DaoException
*/
public int update(String sql, Object[] args) throws DaoException {
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);
}
}
/**
* 返回一个对象
* @param <T>
* @param sql
* @param args
* @return
* @throws DaoException
*/
public <T> T find(String sql, Object[] args) throws DaoException {
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]);
rs = ps.executeQuery();
T t = null;
if (rs.next()) {
t = rowMapper(rs);
}
return t;
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
/**
* 返回一个List
* @param <T>
* @param sql
* @param args
* @return
* @throws DaoException
*/
public <T> List<T> list(String sql, Object[] args) throws DaoException {
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]);
rs = ps.executeQuery();
T t = null;
List<T> list = new ArrayList<T>();
while (rs.next()) {
t = rowMapper(rs);
list.add(t);
}
return list;
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
/**
* rowMapper
* @param rs
* @return
* @throws DaoException
*/
abstract protected <T> T rowMapper(ResultSet rs) throws DaoException;
}
实现类的代码:
public class UserDaoImpl extends BaseDao implements UserDao {
public User findUser(int id) throws DaoException {
String sql = "select *from t_user where id=?";
Object[] args = new Object[] { id };
User user = super.find(sql, args);
return user;
}
public List<User> listUser(String username) throws DaoException {
String sql = "select *from t_user where username=?";
Object[] args = new Object[] { username };
List<User> list = super.list(sql, args);
for (User u : list) {
System.out.println(u.getUserId());
}
return list;
}
@SuppressWarnings("unchecked")
protected User rowMapper(ResultSet rs) throws DaoException {
User user = new User();
try {
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setBrithday(rs.getDate("brithday"));
} catch (SQLException e) {
throw new DaoException(e.getMessage(), e);
}
return user;
}
相关推荐
1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法模式将常见的JDBC操作进行了封装,如执行SQL查询、更新、调用存储过程等。开发者只需要关注SQL语句和参数,而无需处理连接创建、关闭、异常处理等繁琐...
这个"ssm框架整合模板-------简单模板"可能是为了帮助开发者快速搭建一个基于SSM的基础项目结构,以便于后续的开发工作。下面将详细解释SSM框架整合的核心概念、配置过程以及它们在实际开发中的作用。 **1. Spring...
`JdbcTemplate`是Spring框架提供的一个用于简化JDBC编程的工具类,它封装了许多常用的数据库操作,如查询、更新等,并且通过模板模式设计,提供了灵活的扩展机制。这使得开发者能够更专注于业务逻辑而非繁琐的JDBC...
综上所述,这个压缩包提供了Play框架的Java JDBC模块和Twirl模板引擎的相关源代码,对于想要了解或参与这两个组件开发的Java Web开发者来说,这是一个宝贵的资源。通过研究和实践,开发者不仅可以提升对Play框架的...
1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...
通过使用模板方法设计模式,Spring-JdbcTemplate能够在不牺牲灵活性的同时,保证了代码的简洁性和可维护性。 接着,让我们来看看DataSourceTransactionManager,它是Spring提供的事务管理器,主要用于管理基于...
4. **应用场景**:模板模式广泛应用于框架和库的设计中,如MVC架构中的Controller,或者Java中的JDBC API。它适用于那些有固定算法流程,但某些步骤可能需要定制化的场景。 5. **优点**: - 提供了一种代码复用...
总的来说,"spring-jdbc-1.0.723.zip"压缩包中的内容涉及到Spring框架如何通过DAO操作类和JDBC模板简化数据库访问,以及如何实现后台分页查询。这些知识点对于理解Spring如何处理数据库交互以及提升应用的开发效率至...
首先,JDBC连接模板是一种设计模式,用于简化数据库操作,避免重复的数据库连接和关闭过程,提高代码的可读性和可维护性。它通常包括以下几个核心组件: 1. 数据源(DataSource):这是JDBC连接的工厂,提供数据库...
这是一个非常实用的工具类,它通过模板方法模式封装了JDBC的基本操作,如执行SQL查询、更新、存储过程等。`JdbcTemplate`提供了异常转换、参数绑定、结果集处理等功能,使得代码更加简洁且易于维护。 首先,让我们...
"JDBCPro"是基础的JDBC模板,它主要展示了如何使用JDBC进行基本的数据操作。在这一阶段,你会看到以下关键知识点: 1. 数据库连接:通过`Class.forName()`加载数据库驱动,然后使用`DriverManager.getConnection()`...
在实际开发中,为了提高代码的可读性和可维护性,常常会使用DAO(数据访问对象)模式,将数据库操作封装在单独的类或方法中。此外,ORM(对象关系映射)框架,如Hibernate和MyBatis,可以进一步简化JDBC的使用,让...
`JdbcTemplate`是Spring提供的一种模板方法模式实现,它封装了JDBC的常用操作,如执行SQL查询、更新等,提供了异常转换和数据源管理等功能。通过使用`JdbcTemplate`,开发者可以编写出更简洁、更健壮的数据库访问...
例如,Java的JDBC API就使用了模板方法模式,提供了数据库操作的基本流程,而用户只需关注具体的SQL执行细节。 ### 实现示例 ```java abstract class Coffee { // 模板方法 public final void makeCoffee() { ...
Spring JDBC通过Template和DataSourceUtils类提供了一种模板方法模式,使得执行SQL查询、更新和存储过程变得更加简单和可控。同时,Spring的事务管理支持可以确保在多条数据库操作之间保持一致性,避免脏读和不可...
- 在Java中,很多框架和库都应用了模板模式,如Spring的AOP切面处理、JDBC模板等。 5. **优缺点**: - **优点**:模板模式提供了代码复用,降低了系统的复杂度,同时保持了系统的扩展性。通过子类继承抽象类并...
6. **库文件**:依赖的JAR文件,可能包括JDBC驱动,以及其他用于处理HTTP请求、数据验证、模板引擎等的第三方库。 通过学习和实践这个"jdbc+tomcat6.0 bbs"项目,学生可以深入理解Java Web开发、JDBC数据库操作、...
模板模式是一种行为设计模式,它定义了一个操作中的算法框架,并允许子类在不改变算法结构的情况下,重定义算法中的特定步骤。这种模式适用于那些有一系列共同步骤,但部分步骤需要根据具体子类来变化的场景。例如,...
`JdbcTemplate`是Spring JDBC的核心,它提供了一种模板方法模式来执行常见的JDBC操作,如查询、更新、插入和删除。通过使用`JdbcTemplate`,开发者可以避免编写大量重复的JDBC代码,如打开和关闭连接,以及处理异常...
`Scheme`标签可能是指在数据库中使用的一种特定的数据库模式或结构,或者是指一种高级的编程语言,但在这个上下文中,更可能是指数据库的架构或设计。 总结来说,`jdbc-formula`项目可能是为了提供一个统一的方法来...