JdbcTemplate中的封装了很多实用的方法。
首先来介绍一下用JdbcTemplate来查询数据的方法。
1.返回指定对象类型的List (query方法)
Java代码
Java代码
public List getProductModle(String value) throws DataAccessException {
List resultList = new ArrayList();
List args = new ArrayList();
String sql = "select F_CPUT_MOD_ID as id ,F_CPUT_MOD_NAME as name from CPUT_MOD_T"+
" WHERE F_MARKET_LOCA_ID = ? order by F_CPUT_MOD_ID";
if(StringUtils.isNotEmpty(value)){
args.add(value);
}
resultList = this.getJdbcTemplate().query(sql,args.toArray(),
new ProductModleRowMapper());
return resultList;
}
private class ProductModleRowMapper implements RowMapper{
public Object mapRow(final ResultSet rs, final int rowNum) throws SQLException {
ProductModleVO vo = new ProductModleVO();
vo.setProModleId((String)rs.getString("id"));
vo.setProModleName((String)rs.getString("name"));
return vo;
}
}
这里实现了RowMapper类的mapRow方法,用来把查询到的结果集用指定的类来封装,最后返回一个List,List中装着
我们自定的值对象。
2.返回指定类型的结果 (queryForObject方法)
Java代码
public String getCurrentPhase(String arg) throws DataAccessException {
String currentPhase = "";
String sql="select F_CURR_YEAR from COMPETITION_BASE_T where F_COMPETITION_ID=?";
Object[] o ={arg};
try {
currentPhase = (String)this.getJdbcTemplate().queryForObject(sql,o, String.class);
} catch (Exception e) {
currentPhase = "";
e.printStackTrace();
}
return currentPhase;
}
在这个例子中,用到了queryForObject这个方法,其中第一个参数是要执行的sql,第二个参数是Object数组类型(其中装的是sql脚本用到
的参数),第三个参数就是要制定返回结果的类型(这里我定义的是String类型)
3.查询结果返回Int类型 (queryForInt方法)
Java代码
public boolean doCheckCompete(Map args) throws DataAccessException {
....省略代码
Object[] args = new Object[]{
companyId,
competitionId,
marketType,
martID,
currentPhase
};
StringBuffer sql = new StringBuffer();
sql.append("SELECT COUNT ( * ) ");
sql.append("FROM BEFOR_ORDER_T t ");
sql.append("WHERE T.F_COMPANY_ID = ? ");
sql.append(" and T.F_COMPETITION_ID=? ");
sql.append(" and T.F_MARKET_LOCA_ID=? ");
sql.append(" and T.F_MARKET_SCOPE_ID=? ");
sql.append(" and T.F_CURRENT_PHASE = ? ");
int i=0;
i = this.getJdbcTemplate().queryForInt(sql.toString(), args);
if(i>0){
return true;
}
return false;
}
这里用的是queryForInt方法返回int类型。
4.查询结果返回Map类型 (queryForMap方法)
Java代码
String sql = "select T.F_COMPETE_ORDER_STATE ,T.F_GENERATED_ORDERS " +
"from COMPETITION_BASE_T t " +
"where T.F_COMPETITION_ID = ?";
Map state = (Map)this.getJdbcTemplate().queryForMap(sql,new Object[]{args});
String compete_order_state = state.get("F_COMPETE_ORDER_STATE").toString();
String generated_orders = state.get("F_GENERATED_ORDERS").toString();
返回后的map中的键值对应的是select语句中的字段名字。
5.查询结果集直接返回list (queryForList方法)
Java代码
List list = new ArrayList();
String sql="select T.F_OFF_PERIOD,T.F_PROBABILITY from ORDER_OFF_PERIOD_T t "+
"where T.F_COMPETITION_ID=?";
Object[] args ={arg};
try {
list = this.getJdbcTemplate().queryForList(sql, args);
} catch (Exception e) {
e.printStackTrace();
}
...代码省略
String a = (String)(((Map) list.get(0)).get("F_PROBABILITY"));
String b = (String)(((Map) list.get(1)).get("F_PROBABILITY"));
String c = (String)(((Map) list.get(2)).get("F_PROBABILITY"));
返回的List中装载的是Map对象,没个map对象中的键值对应sql脚本的字段名字。
上一篇中介绍了JdbcTemplate 的一些常用的查询方法,在这篇里将介绍用JdbcTemplate做更新数据操作
和调用存储过程。
1. JdbcTemplate 更新数据
Java代码
public boolean switchStartOrderMeeting(String argument, String flag)
throws DataAccessException {
boolean result = false;
String sql =
sql = "update COMPETITION_BASE_T t set T.F_COMPETE_ORDER_STATE = '0'"+
" where T.F_COMPETITION_ID = ?";
int i = 0;
//返回所影响的行数
i = this.getJdbcTemplate().update(sql, new Object[] { argument });
if (i > 0) {
result = true;
}
return result;
}
这个方法很简单,update方法只要传入sql脚本和脚本参数(Object数组类型)。
2. JdbcTemplate 调用存储过程
Java代码
//5个输入参数,3个输出参数
String sql = "{call GENERATEORDERS_P(?,?,?,?,?,?,?,?)}";
final String company_id = result.get("F_COMPANY_ID").toString(); // 公司ID
final String competition_id = result.get("F_COMPETITION_ID").toString(); // 比赛ID
final String current_phase = result.get("F_CURRENT_PHASE").toString(); // 当前周期
final String market_scope_id = result.get("F_MARKET_SCOPE_ID").toString(); // 市场ID
final String market_loca_id = result.get("F_MARKET_LOCA_ID").toString(); // 产品类型ID
Map mapR = (Map) getJdbcTemplate().execute(sql,new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs)throws SQLException,DataAccessException {
cs.setString(1, current_phase); // 输入参数
cs.setString(2, competition_id); // 输入参数
cs.setString(3, market_scope_id); // 输入参数
cs.setString(4, market_loca_id); // 输入参数
cs.setString(5, company_id); // 输入参数
cs.registerOutParameter(6,Types.VARCHAR);//输出参数
cs.registerOutParameter(7,Types.VARCHAR);//输出参数
cs.registerOutParameter(8,Types.VARCHAR);//输出参数
cs.execute();
Map map = new HashMap();
map.put("RESULT", cs.getString(6)); // 订单数量
map.put("F_PRICE", cs.getString(7)); // 订单价格
map.put("F_CPUT_MOD_ID", cs.getString(8));// 产品型号ID
return map;
}
});
execute方法返回的是一个Object对象,在这里我封装了一个Map对象返回。
分享到:
相关推荐
在Java世界中,Spring框架是应用最广泛的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器之一。其中,`JdbcTemplate`是Spring JDBC模块的核心组件,为数据库操作提供了简单、灵活的API。这篇...
《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中用于简化JDBC操作的一个核心组件,它是Spring对JDBC API的封装,旨在提供一个更加简洁、健壮且可测试的数据库访问层。在这个实例工程中,我们...
在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...
### JdbcTemplate 的事务控制 #### 一、引言 在软件开发过程中,事务管理是非常重要的一个环节,尤其是在处理数据库操作时。事务能够确保一系列数据库操作要么全部成功,要么全部失败,从而保持数据的一致性和完整...
本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...
总的来说,Spring的JdbcTemplate是Java应用中进行数据库操作的优秀选择。它提高了代码的可读性和可维护性,减少了重复的JDBC代码,同时也提供了健壮的异常处理和事务管理机制。通过熟练掌握JdbcTemplate,开发者可以...
这样的图示对于理解JdbcTemplate的工作原理以及如何在项目中实际应用它是很有帮助的。 标签"spring 尚硅谷 JdbcTemplate"说明这个文档可能是由"尚硅谷"发布,"尚硅谷"是一家专注于IT教育和培训的机构,他们提供的...
`JdbcTemplate`是Spring框架中的一个核心组件,主要用于简化Java应用程序与关系数据库之间的交互。它提供了模板化的SQL执行方法,从而避免了繁琐的JDBC代码编写,提高了代码的可读性和可维护性。项目经理编写的这个`...
SpringMVC与JdbcTemplate的集成是企业级应用中常见的做法。通过这种方式,开发者可以将业务逻辑与数据访问层进行分离,提高代码的可维护性和可测试性。下面将详细介绍这两个组件以及如何在实际项目中使用它们。 ...
在Java世界中,Spring框架是企业级应用开发的首选,而`JdbcTemplate`是Spring JDBC模块的核心组件,它提供了一种方便、灵活且强大的方式来操作数据库。本示例将深入探讨`JdbcTemplate`的使用,包括其核心功能以及...
《Spring JdbcTemplate 深入解析与实战应用》 在Java世界中,Spring框架以其强大的功能和灵活性,深受广大开发者的喜爱。其中,Spring JDBC Template是Spring提供的一个用于简化数据库操作的工具,它抽象了JDBC API...
2. **创建JdbcTemplate Bean**:接下来,我们需要创建一个JdbcTemplate的实例,并将其注入到我们的应用中。这通常在Spring配置文件中完成,通过`@Bean`注解创建一个JdbcTemplate实例,并将DataSource注入其中。 ```...
JdbcTemplate是Spring框架中的一个核心组件,主要用于简化Java应用程序对数据库的操作。它提供了一种声明式的编程方式,降低了与数据库交互的复杂性,使得开发者能够更专注于业务逻辑,而不是底层的SQL语句和连接...
通过以上步骤,我们成功地在Spring Boot应用中配置了多数据源,并使用了`JdbcTemplate`进行数据库操作。这个过程的关键在于正确配置数据源,创建并注入相应的`JdbcTemplate` bean,然后在业务逻辑中选择合适的数据源...
JavaEE是企业级应用开发的重要框架,而Spring框架作为JavaEE的核心部分,提供了一系列的强大功能,其中JdbcTemplate是Spring提供的一个用于简化数据库操作的工具。本篇将详细讲解JdbcTemplate的简单示例,帮助开发者...
在Java应用中,特别是在基于Spring的系统中,`JdbcTemplate`是一个非常常用的数据访问工具,它提供了事务管理、参数绑定、异常翻译等功能,使得数据库操作更加简单、安全。 首先,要使用`JdbcTemplate`,我们需要...
在Java世界中,Spring框架是企业级应用开发的首选。Spring JDBC模絫提供了一种简洁的方式来处理数据库操作,而`Spring JdbcTemplate`是这个模絫的核心组件。本教程将深入探讨如何使用基于注解的Spring JdbcTemplate...
在实际应用中,开发者需要导入的这五个jar包可能包括Spring框架的核心库、JDBC驱动、AOP支持库等。例如,spring-jdbc.jar包含JdbcTemplate的实现,而ojdbc.jar或其他数据库驱动jar则是针对特定数据库的连接支持。...
Spring是一个广泛应用的Java企业级应用框架,它提供了多种数据访问工具,而JdbcTemplate就是其中之一,用于简化JDBC(Java Database Connectivity)操作,提高代码的可读性和可维护性。 在Spring4版本中,...