- 浏览: 6350402 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。
JdbcTemplate 用来 抽象我们常用的一些方法。
配合JDK1.5中的可变参数列表,用起来很爽!
<beans> <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> <property name="URL"> <value>jdbc:oracle:thin:root/123@localhost:1521/XE</value> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="userDAO" class="DAO.Imp.UserDAOImp"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate" /> </property> </bean> <bean id="user" class="Model.User"> <property name="dao"> <ref bean="userDAO" /> </property> </bean> </beans>
public void execute(String sql, Object... args) { this.simpleJdbcTemplate.update(sql, args); } jdbcTemplate.queryForInt("SELECT last_insert_id() as id"); public List queryForList(String sql, Object... args) { return this.jdbcTemplate.queryForList(sql, args); }
public String buildPageSql(String _sql, int page, int pageSize) { String sql_str = null; String db_type = EopSetting.DBTYPE; if (db_type.equals("1")) { db_type = "mysql"; } else { db_type = "oracle"; } if (db_type.equals("mysql")) { sql_str = _sql + " LIMIT " + (page - 1) * pageSize + "," + pageSize; } else { StringBuffer sql = new StringBuffer( "SELECT * FROM (SELECT t1.*,rownum sn1 FROM ("); sql.append(_sql); sql.append(") t1) t2 WHERE t2.sn1 BETWEEN "); sql.append((page - 1) * pageSize + 1); sql.append(" AND "); sql.append(page * pageSize); sql_str = sql.toString(); } return sql_str.toString(); }
更多参考:
http://it.oyksoft.com/post/234/
http://blog.csdn.net/nomads/archive/2006/05/05/709551.aspx
http://www.iteye.com/topic/53526
1.Java 5
Spring 2.0保持向后对Java1.3和1.4的兼容。然而,Java 5带来越来越多的新特性。
其中一些,比如已经讨论过的类型推断,可以随意使用。而其他的需要自己来选择。让我们快速预览其中的一些。
新的API
大量的新的API在核心功能上提供Java 5的功能,这些核心功能继续运行在Java的早些版本上。
尤其是:
•SimpleJdbcTemplate:和熟悉的JdbcTemplate类似的新类,这使得JDBC使用更加简单。
•AspectJProxyFactory:和ProxyFactory类似的新类,设计用来使用@AspectJ 切面以编程方式创建代理。
随着时间延续,这样的类的数目会越来越多。
SimpleJdbcTemplate是用来例证的。让我们看一下在调用一个计算总数功能时的效果。在Java 5之前使用JdbcTemplate,我们需要在一个数组中封装绑定参数,就像下面这样:
jdbcTemplate.queryForInt("SELECT COUNT(0) FROM T_CLIENT WHERE TYPE=? AND CURRENCY=?", new Object[] { new Integer(13), "GBP" } );
如果我们使用Java 5,自动装箱去除了一点困扰,因为我们不再需要原始封装器类型。这仅仅来自于语言特性,而不需要Spring提供任何新的东西:
jdbcTemplate.queryForInt("SELECT COUNT(0) FROM T_CLIENT WHERE TYPE=? AND CURRENCY=?", new Object[] { 13, "GBP" } );
然而,通过采用Java 5我们能够完全不再需要对象数组。下面的例子显示了SimpleJdbcTemplate是如何使用变参来绑定变量的,意味着开发者可以提供任意数目的变参,而不需要数组:
simpleJdbcTemplate.queryForInt("SELECT COUNT(0) FROM T_CLIENT WHERE TYPE=? AND CURRENCY=?", 13, "GBP" );
作为增加的一个好处,我们不再需要区分带有绑定和没绑定参数的情况。虽然这需要JdbcTemplate上的两个方法,来避免需要给执行SQL的重载方法传入一个空的Object数组,但通过SimpleJdbcTemplate,框架代码可以检查变参的长度。这样下面的例子调用同一个方法:
simpleJdbcTemplate.queryForInt("SELECT COUNT(0) FROM T_CLIENT");
还有更显著的好处。泛型使得签名更加清晰,并去除强制转换。比如,JdbcTemplate的queryForMap()方法返回一个ResultSet中的从列名到列值的Map。当它是SimpleJdbcTemplate上方法签名的显式部分时,这就变得清楚得多:
public Map<String, Object> queryForMap(String sql, Object... args)
throws DataAccessException
如果是返回这种map的列表的方法,那还会更清楚:
public List<Map<String, Object>> queryForList(String sql, Object ... args)
throws DataAccessException
增加SimpleJdbcTemplate的目标之一是,提供那些最经常使用的方法。JdbcTemplate是Spring中最大的类之一,有很多的方法,其中一些是用于非常深奥的用途。在这种高级的情况下,根据全部问题的复杂性,语言语法糖就可能不再重要。对于这样的案例,SimpleJdbcTemplate封装了一个JdbcTemplate实例,通过getJdbcOperations()方法可以访问到。
为了支持扩展DAO支持类的用法模型,Spring 2.0提供了SimpleJdbcDaoSupport类,提供一个预先配置的JdbcTemplate。SimpleJdbcTemplate也象 JdbcTemplate一样很易于实例化或者直接注入,通过仅仅提供一个javax.sql.Datasource实现——这是Spring对所有关系型数据库访问的支持的开始点。就像JdbcTemplate,SimpleJdbcTemplate可以当作一个类库来使用,而无需使用Spring的其他部分。
public List getList() {
jt = new JdbcTemplate(dataSource);
List rows = jt.queryForList("select * from mytable");
return rows;
}
2、RowMapper
public List<TaoBaoStore> getAllTaoBaoStore() { List<TaoBaoStore> stores =jdbcTemplate.query("select * from tao_bao_store", new TaoBaoStoreMapper()); return stores; }
public class TaoBaoStoreMapper implements RowMapper { public Object mapRow(ResultSet rs, int arg1) throws SQLException { TaoBaoStore store = new TaoBaoStore(); store.setAppkey(rs.getString("appkey")); store.setAppsecret(rs.getString("appsecret")); store.setExternal_password(rs.getString("external_password")); store.setExternal_store_id(rs.getString("external_store_id")); store.setFinish_last_update_time(rs.getString("finish_last_update_time")); store.setFinish_synchronizing_cycle(rs.getString("finish_synchronizing_cycle")); store.setPaid_last_update_time(rs.getString("paid_last_update_time")); store.setPaid_synchronizing_cycle(rs.getString("paid_synchronizing_cycle")); store.setStatus(rs.getInt("status")); store.setStatus_time_task(rs.getInt("status_time_task")); store.setStore_id(rs.getString("store_id")); store.setStore_name(rs.getString("store_name")); return store; } }
发表评论
-
Spring 配置多数据源实现数据库读写分离
2014-10-09 11:05 58216现在大型的电子商务 ... -
strust_spring_hibernate的优缺点
2014-10-08 09:41 2751struts框架具有组件的模块化,灵活性和重用性的优点,同时 ... -
声明式事务
2014-09-03 17:53 1774跟开涛学Spring 数据库事务 本 ... -
@Component注解
2014-08-20 15:43 37822Spring自带的@Component注 ... -
日志记录、性能监控的三种实现方式
2014-08-18 14:09 7622一、需解决的问题 部分API有签名参数(signatur ... -
BeanWrapper 设置和获取属性值
2014-08-18 11:10 96815.4. Bean处理和BeanWrapper - Spr ... -
SpringMVC的拦截器Interceptor
2014-08-15 10:23 5072跟开涛学SpringMVC 接口: Ha ... -
AOP
2014-08-14 17:00 10738跟开涛学Spring 问题: 使用BeanFac ... -
Bean作用域
2014-08-14 15:16 1793跟开涛学Spring 附:单例模式的DoubleChec ... -
DI
2014-08-14 10:26 1784跟开涛学Spring DI: ... -
IOC + 容器
2014-08-13 18:03 2909跟开涛学Spring 传统应用程序示意图 ... -
Spring中Bean初始化实例【重要】
2014-07-21 16:48 61232可参考文章: Spring Bean 生命周期 Spr ... -
bean的生命周期
2014-07-21 15:41 1518在spring中,从BeanFactory或Applica ... -
Spring中BeanPostProcessor
2014-07-21 15:19 50679Spring提供了很多扩展 ... -
context,listener,filter,servlet加载顺序
2014-04-22 14:08 8065web.xml加载过程(步骤):1.启动WEB项目的时候, ... -
Spring+hibernate的session问题
2013-09-27 10:20 3181在spring框架和hibernate框架集成的时候,根据 ... -
HttpServletRequestWrapper 用法
2013-09-25 16:50 8493HttpServletRequestWrapper ... -
AOP
2012-05-09 10:14 1617引子: AOP(面向方面 ... -
IOC
2012-05-09 10:11 1592引述:IoC(控制反转:I ... -
事务隔离级别
2012-03-08 11:39 10501模拟数据库的四种隔离级别1 模拟数据库的四种隔离级 ...
相关推荐
`JdbcTemplate`和`SimpleJdbcTemplate`是Spring提供的两个核心组件,用于简化Java数据库连接(JDBC)操作,从而减轻开发人员处理事务、异常处理和资源管理的负担。下面将详细阐述这两个工具的使用及其与MySQL数据库...
`SimpleJdbcTemplate`是Spring框架提供的一个轻量级数据库访问组件,它基于`JdbcTemplate`,但去除了部分复杂性,使得对数据库的操作更加简洁。以下我们将逐步介绍如何配置、使用`SimpleJdbcTemplate`以及它的一些...
SimpleJdbcTemplate是Spring JDBC提供的一个简单易用的模板类,它基于JdbcTemplate并进一步降低了数据库访问的复杂性。通过预编译SQL语句、参数绑定、结果集处理等功能,它使得开发者无需关注事务管理、异常转换等...
Spring JDBC通过提供JdbcTemplate和SimpleJdbcTemplate等工具类,帮助开发者以更安全、更易于管理的方式与数据库进行交互,降低了传统JDBC代码的复杂性。下面我们将详细探讨Spring JDBC的核心概念、工作原理以及如何...
对于SQL数据库操作,Spring提供了JdbcTemplate和SimpleJdbcTemplate,它们是不依赖于ORM的数据库访问工具。通过源码,我们可以学习到如何编写SQL语句,如何执行查询、更新等操作,以及如何处理结果集。 9. **异常...
这个jar包包含了Spring对JDBC的支持,主要包括`JdbcTemplate`和`SimpleJdbcTemplate`类。`JdbcTemplate`是Spring提供的一种模板方法模式实现,它封装了JDBC的常用操作,如执行SQL查询、更新等,提供了异常转换和数据...
Spring JDBC的主要组件包括JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate。 ### 2. JdbcTemplate使用 JdbcTemplate是Spring JDBC的核心,它提供了模板方法来执行SQL查询和更新。使用JdbcTemplate...
3. **SimpleJdbcTemplate**: SimpleJdbcTemplate是JdbcTemplate的一个简化版本,面向那些不希望使用模板类的全部功能,但又想要避免大量重复代码的开发者。它的API更加简洁,适合快速开发。 4. **...
1. `spring-jdbc.jar`:这是Spring JDBC的主要库,包含了Spring对JDBC的支持,包括JdbcTemplate和SimpleJdbcTemplate等模板类,以及DataSourceTransactionManager等事务管理工具。 2. `spring-tx.jar`:提供了事务...
在Spring框架中,Spring JDBC通过一系列的抽象层,如JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate等,将数据库访问的繁琐细节隐藏起来,从而减少了代码量,提高了代码的可读性和可维护性。...
《Spring4.0从入门到精通:SpringMVC+JdbcTemplate整合示例解析》 Spring框架作为Java领域中广泛使用的轻量级框架,其4.0版本更是深受开发者喜爱。本教程将深入探讨如何在Spring4.0中整合SpringMVC和JdbcTemplate,...
这两个基类为自定义DAO提供了便利,它们提供了对JdbcTemplate或SimpleJdbcTemplate的引用,减少了重复代码。 10. **Best Practices** - 使用PreparedStatement而非Statement,防止SQL注入。 - 合理配置事务边界...
5. **Spring JDBC 和 DAO**:Spring 提供的 JDBC 模块简化了数据库操作,通过 JdbcTemplate 或 SimpleJdbcTemplate 可以实现无事务的数据库访问。而 DataSource 对象可以在 Spring 容器中配置,方便在 DAO 中获取并...
Spring JDBC通过提供模板类,如JdbcTemplate和SimpleJdbcTemplate,将这些复杂性封装起来,使得开发者可以更专注于业务逻辑,而不是底层的数据库操作。在鸟人留言板项目中,Spring JDBC可能被用来管理用户的留言存储...
通过这些库,开发者可以轻松地在Spring环境中配置数据源、事务管理器,并使用JdbcTemplate或SimpleJdbcTemplate进行数据库操作,同时利用Spring的AOP能力来管理事务。例如,可以在Spring的XML配置文件中定义数据源、...
Spring JDBC的核心是JdbcTemplate和SimpleJdbcTemplate,这两个模板类极大地简化了数据库操作。它们提供了执行SQL查询、更新、存储过程的方法,并且自动处理结果集和异常。Spring JDBC还支持声明式事务管理,只需在...
5. **JDBC抽象层**:4.0版本的JdbcTemplate和SimpleJdbcTemplate提供了更多的便利方法,简化了数据库操作。 6. **AOP增强**:增强了面向切面编程(AOP)的能力,包括更灵活的切入点表达式和代理模型。 在4.0.3....
在数据访问方面,《Spring in Action》会介绍Spring的JdbcTemplate、SimpleJdbcTemplate以及命名参数JdbcTemplate,这些都是处理数据库操作的强大工具。同时,对于ORM框架,如Hibernate和MyBatis,Spring也提供了很...
3. **配置JDBC**:在Spring配置文件中设置JDBC相关的Bean,如DataSource,JdbcTemplate或SimpleJdbcTemplate。 4. **整合Struts与Spring**:通过Spring-Struts的插件或者手动配置,使得Struts的Action由Spring管理...
Spring JDBC提供了一些关键组件,如JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate,它们帮助开发者更安全、更高效地执行SQL语句。例如,JdbcTemplate提供了一种模板化的API,可以避免编写大量的...