`

Spring JdbcTemplate 应用(实用方法)

阅读更多

JdbcTemplate中的封装了很多实用的方法。

首先来介绍一下用JdbcTemplate来查询数据的方法。

 

1.返回指定对象类型的List (query方法)

 

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; } /** * @author 死胖子(转) * @description 封装产品型号结果集 */ 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方法)

 

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.getJdbcTemplat().queryForObject(sql,o, String.class); } catch (Exception e) { currentPhase = ""; e.printStackTrace(); } return currentPhase; }


    在这个例子中,用到了queryForObject这个方法,其中第一个参数是要执行的sql,第二个参数是Object数组类型(其中装的是sql脚本用到的参数),第三个参数就是要制定返回结果的类型(这里我定义的是String类型)

 

3.查询结果返回Int类型 (queryForInt方法)

public boolean doCheckCompete(Map args) throws DataAccessException { ....省略代码 /**sql脚本用到的参数集合*/ 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方法)

 

String sql= "selectT.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方法)

 

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 更新数据 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 调用存储过程

 

/**代码片段*/ //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对象返回。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring SpringMvc JdbcTemplate NamedParameterJdbcTemplate

    标题 "Spring SpringMvc JdbcTemplate NamedParameterJdbcTemplate" 涉及到的是Java开发中的关键框架——Spring,以及它在数据库操作中的两个重要组件:JdbcTemplate和NamedParameterJdbcTemplate。这两个工具是...

    Spring3.X编程技术与应用,完整扫描版

    全书分3篇共21章,具体内容包括:Spring环境的安装与使用、JSP与JSTL简介、 Spring基础概念与工具、用SpringJdbcTemplate访问数据库、使用Mayen工程、Spring MVC编程、基于 MVC的资源共享网站设计、Spring的AOP编程...

    Java图书管理系统( Spring+Spring MVC+JdbcTemplate)

    Java图书管理系统是一个基于Spring、Spring MVC和JdbcTemplate技术构建的应用,旨在实现全面的图书管理功能。这个系统不仅涵盖了用户管理,如读者和管理员的登录,还包括了图书资源的管理,如图书的添加、删除、修改...

    JdbcTemplate

    综上所述,`JdbcTemplate`是Spring提供的一种强大且实用的工具,它极大地简化了JDBC编程,提高了代码的可读性和可维护性,是Java企业级应用中处理数据库操作的首选组件。正确理解和熟练运用`JdbcTemplate`,可以显著...

    Spring.3.x企业应用开发实战(完整版).part2

    这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升应用开发的优雅性。  《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时...

    JdbcTemplate,自己封装的jdbc小框架

    为了解决这个问题,开发者常常会使用一些框架来简化这些操作,比如Spring的JdbcTemplate。本项目则基于这一思想,创建了一个自定义的JdbcTemplate小框架,旨在提供更简洁、高效的数据库操作方式。 自封装的...

    Spring Boot 学习笔记完整教程.pdf

    Spring Boot是一种基于...文档提供了Spring Boot的核心知识点和一些实用的案例,适用于Spring Boot的初学者和有经验的开发者。通过对这些知识点的掌握,开发者可以更有效地使用Spring Boot框架来构建和管理Java应用。

    jdbcTemplate使用方法实例解析

    jdbcTemplate是一个基于Spring JDBC抽象框架的核心类,提供了大量实用的方法来简化数据库操作。在本文中,我们将详细介绍jdbcTemplate的使用方法实例解析,以及其在实际开发中的应用价值。 一、JdbcTemplate概述 ...

    Spring JDBC相关jar包:spring_jdbc_4.0.0.zip

    在实际应用中,结合Spring的其他模块,如MyBatis-Spring或Hibernate-Spring,可以构建出强大的数据访问层。通过使用`JdbcTemplate`,开发人员可以从繁琐的JDBC代码中解脱出来,专注于业务逻辑,提高开发效率,同时...

    Spring+MVC+MYBatis企业应用实战

    此外,Spring与MyBatis的整合也是教程中的重要环节,这包括Spring的JdbcTemplate和MyBatis-Spring的使用,以便实现数据访问的透明化。 实战项目部分,你将学会如何搭建SSM项目结构,包括pom.xml的配置、数据库连接...

    图书管理系统( Spring+Spring MVC+JdbcTemplate).zip

    实用工具:如编译器、链接器、调试器、文件管理器等,协助开发、维护和管理计算机系统。 应用软件: 办公套件:如Microsoft Office、LibreOffice,包括文字处理、电子表格、演示文稿等工具。 专业软件:如Auto...

    Spring3.x企业应用开发实战(完整版) part1

    这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升应用开发的优雅性。  《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时...

    Beginning Spring(2015)

    通过上述章节的详细介绍,《Beginning Spring》这本书为初学者提供了全面而深入的Spring框架学习指南,不仅覆盖了Spring的基本概念和技术细节,还提供了实用的案例研究和最佳实践建议,对于想要深入了解Spring框架的...

    Spring配置weblogic中的Datasource

    总之,理解并掌握Spring在WebLogic中配置数据源的方法对于Java开发者来说至关重要,这有助于构建健壮、高效的企业级应用。同时,配合Eclipse这样的开发工具,能提高开发效率和项目的可维护性。在不断变化的IT环境中...

    Wrox.Beginning.Spring.2015

    主要内容包括:Spring提供的JdbcTemplate类及其用法;如何处理SQL异常;以及事务管理等高级主题。这些知识对于开发高效、可靠的数据库访问层至关重要。 ### 使用Spring和JPA进行数据访问 (Chapter 5) Java ...

    Spring中英文资料

    这个"Spring中英文资料"包含的是关于Spring 2.0版本的文档,提供了中文和英文两种语言的学习资源,对于想要深入理解Spring的开发者来说非常实用。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)、...

    Spring基本架包

    它包括了`JdbcTemplate`和`SimpleJdbcInsert`等实用工具类。 7. **spring-messaging-4.3.18.RELEASE.jar**:此模块支持消息传递,特别是对JMS(Java Message Service)的支持。它提供了处理消息的模板和监听器接口...

    Apress.Pro.Spring.4th.Edition

    - **版本介绍**:本书覆盖了Spring Framework的第4版,是目前最全面且实用的Spring指南之一。 - **目标读者**:面向具有一定Java经验的开发者,旨在帮助他们深入理解和应用Spring框架。 ### 核心概念与技术 #### 1....

Global site tag (gtag.js) - Google Analytics