- 浏览: 588050 次
- 来自: 北京
文章分类
最新评论
-
lidi2011:
很通俗易懂的文章,很形象。
同步synchronized方法和代码块 -
inuyasha027:
领教了,谢谢。
Hadoop安装, Hive 安装。 -
xbmujfly:
好文 ,本人发现晚了
学习笔记 - java.util.concurrent 多线程框架 -
hanazawakana:
学习学习!
ANT-build.xml文件详解 -
david.org:
似乎还忽略一点,那就是cassandra不同数据中心的同步,H ...
Cassandra Vs HBase
URL:http://www.iteye.com/topic/53526
1、使用JdbcTemplate的execute()方法执行SQL语句 Java代码 复制代码 1. jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100))"); jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100))"); 2、如果是UPDATE或INSERT,可以用update()方法。 Java代码 复制代码 1. jdbcTemplate.update("INSERT INTO USER VALUES('" 2. + user.getId() + "', '" 3. + user.getName() + "', '" 4. + user.getSex() + "', '" 5. + user.getAge() + "')"); jdbcTemplate.update("INSERT INTO USER VALUES('" + user.getId() + "', '" + user.getName() + "', '" + user.getSex() + "', '" + user.getAge() + "')"); 3、带参数的更新 Java代码 复制代码 1. jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object[] {name, id}); jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object[] {name, id}); Java代码 复制代码 1. jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new Object[] {user.getId(), user.getName(), user.getSex(), user.getAge()}); jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new Object[] {user.getId(), user.getName(), user.getSex(), user.getAge()}); 4、使用JdbcTemplate进行查询时,使用queryForXXX()等方法 Java代码 复制代码 1. int count = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM USER"); int count = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM USER"); Java代码 复制代码 1. String name = (String) jdbcTemplate.queryForObject("SELECT name FROM USER WHERE user_id = ?", new Object[] {id}, java.lang.String.class); String name = (String) jdbcTemplate.queryForObject("SELECT name FROM USER WHERE user_id = ?", new Object[] {id}, java.lang.String.class); Java代码 复制代码 1. List rows = jdbcTemplate.queryForList("SELECT * FROM USER"); List rows = jdbcTemplate.queryForList("SELECT * FROM USER"); Java代码 复制代码 1. List rows = jdbcTemplate.queryForList("SELECT * FROM USER"); 2. Iterator it = rows.iterator(); 3. while(it.hasNext()) { 4. Map userMap = (Map) it.next(); 5. System.out.print(userMap.get("user_id") + "\t"); 6. System.out.print(userMap.get("name") + "\t"); 7. System.out.print(userMap.get("sex") + "\t"); 8. System.out.println(userMap.get("age") + "\t"); 9. } List rows = jdbcTemplate.queryForList("SELECT * FROM USER"); Iterator it = rows.iterator(); while(it.hasNext()) { Map userMap = (Map) it.next(); System.out.print(userMap.get("user_id") + "\t"); System.out.print(userMap.get("name") + "\t"); System.out.print(userMap.get("sex") + "\t"); System.out.println(userMap.get("age") + "\t"); } JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。 除了大量使用Template Method来封装一些底层的操作细节,spring也大量使用callback方式类回调相关类别的方法以提供JDBC相关类别的功能,使传统的JDBC的使用者也能清楚了解spring所提供的相关封装类别方法的使用。 JDBC的PreparedStatement Java代码 复制代码 1. final String id = user.getId(); 2. final String name = user.getName(); 3. final String sex = user.getSex() + ""; 4. final int age = user.getAge(); 5. 6. jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", 7. new PreparedStatementSetter() { 8. public void setValues(PreparedStatement ps) throws SQLException { 9. ps.setString(1, id); 10. ps.setString(2, name); 11. ps.setString(3, sex); 12. ps.setInt(4, age); 13. } 14. }); final String id = user.getId(); final String name = user.getName(); final String sex = user.getSex() + ""; final int age = user.getAge(); jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new PreparedStatementSetter() { public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, id); ps.setString(2, name); ps.setString(3, sex); ps.setInt(4, age); } }); Java代码 复制代码 1. final User user = new User(); 2. jdbcTemplate.query("SELECT * FROM USER WHERE user_id = ?", 3. new Object[] {id}, 4. new RowCallbackHandler() { 5. public void processRow(ResultSet rs) throws SQLException { 6. user.setId(rs.getString("user_id")); 7. user.setName(rs.getString("name")); 8. user.setSex(rs.getString("sex").charAt(0)); 9. user.setAge(rs.getInt("age")); 10. } 11. }); final User user = new User(); jdbcTemplate.query("SELECT * FROM USER WHERE user_id = ?", new Object[] {id}, new RowCallbackHandler() { public void processRow(ResultSet rs) throws SQLException { user.setId(rs.getString("user_id")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex").charAt(0)); user.setAge(rs.getInt("age")); } }); Java代码 复制代码 1. class UserRowMapper implements RowMapper { 2. public Object mapRow(ResultSet rs, int index) throws SQLException { 3. User user = new User(); 4. 5. user.setId(rs.getString("user_id")); 6. user.setName(rs.getString("name")); 7. user.setSex(rs.getString("sex").charAt(0)); 8. user.setAge(rs.getInt("age")); 9. 10. return user; 11. } 12. } 13. 14. public List findAllByRowMapperResultReader() { 15. String sql = "SELECT * FROM USER"; 16. return jdbcTemplate.query(sql, new RowMapperResultReader(new UserRowMapper())); 17. } class UserRowMapper implements RowMapper { public Object mapRow(ResultSet rs, int index) throws SQLException { User user = new User(); user.setId(rs.getString("user_id")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex").charAt(0)); user.setAge(rs.getInt("age")); return user; } } public List findAllByRowMapperResultReader() { String sql = "SELECT * FROM USER"; return jdbcTemplate.query(sql, new RowMapperResultReader(new UserRowMapper())); } 在getUser(id)里面使用UserRowMapper Java代码 复制代码 1. public User getUser(final String id) throws DataAccessException { 2. String sql = "SELECT * FROM USER WHERE user_id=?"; 3. final Object[] params = new Object[] { id }; 4. List list = jdbcTemplate.query(sql, params, new RowMapperResultReader(new UserRowMapper())); 5. 6. return (User) list.get(0); 7. } public User getUser(final String id) throws DataAccessException { String sql = "SELECT * FROM USER WHERE user_id=?"; final Object[] params = new Object[] { id }; List list = jdbcTemplate.query(sql, params, new RowMapperResultReader(new UserRowMapper())); return (User) list.get(0); } 网上收集 org.springframework.jdbc.core.PreparedStatementCreator 返回预编译SQL 不能于Object[]一起用 Java代码 复制代码 1. public PreparedStatement createPreparedStatement(Connection con) throws SQLException { 2. return con.prepareStatement(sql); 3. } public PreparedStatement createPreparedStatement(Connection con) throws SQLException { return con.prepareStatement(sql); } 1.增删改 org.springframework.jdbc.core.JdbcTemplate 类(必须指定数据源dataSource) Java代码 复制代码 1. template.update("insert into web_person values(?,?,?)",Object[]); template.update("insert into web_person values(?,?,?)",Object[]); 或 Java代码 复制代码 1. template.update("insert into web_person values(?,?,?)",new PreparedStatementSetter(){ 匿名内部类 只能访问外部最终局部变量 2. 3. public void setValues(PreparedStatement ps) throws SQLException { 4. ps.setInt(index++,3); 5. }); template.update("insert into web_person values(?,?,?)",new PreparedStatementSetter(){ 匿名内部类 只能访问外部最终局部变量 public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(index++,3); }); org.springframework.jdbc.core.PreparedStatementSetter 接口 处理预编译SQL Java代码 复制代码 1. public void setValues(PreparedStatement ps) throws SQLException { 2. ps.setInt(index++,3); 3. } public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(index++,3); } 2.查询JdbcTemplate.query(String,[Object[]/PreparedStatementSetter],RowMapper/RowCallbackHandler) org.springframework.jdbc.core.RowMapper 记录映射接口 处理结果集 Java代码 复制代码 1. public Object mapRow(ResultSet rs, int arg1) throws SQLException { int表当前行数 2. person.setId(rs.getInt("id")); 3. } 4. List template.query("select * from web_person where id=?",Object[],RowMapper); public Object mapRow(ResultSet rs, int arg1) throws SQLException { int表当前行数 person.setId(rs.getInt("id")); } List template.query("select * from web_person where id=?",Object[],RowMapper); org.springframework.jdbc.core.RowCallbackHandler 记录回调管理器接口 处理结果集 Java代码 复制代码 1. template.query("select * from web_person where id=?",Object[],new RowCallbackHandler(){ 2. public void processRow(ResultSet rs) throws SQLException { 3. person.setId(rs.getInt("id")); 4. });
发表评论
-
Cassandra Vs HBase
2011-03-31 17:27 2124Cassandra vs HBaseBy Vaibhav Pu ... -
Slope one:简单高效的推荐算法
2011-03-31 17:16 2710推荐系统最早在亚马逊的网站上应用,根据以往用户的购买行为, ... -
Hive 与 Hbase 的简单区别
2011-03-28 11:10 4168Hive是為簡化編寫MapReduce程序而生的,使用MapR ... -
Java对象缓存系统的实现,实现了LRU算法,并可以进行集群同步
2009-08-05 17:32 3705LRU算法实现: package com.javaeye.x ... -
Unsupported major.minor version 49.0
2009-07-14 16:03 1535http://www.blogjava.net/Unmi/ar ... -
Apache Commons Logging 是如何决定使用哪个日志实现类的
2009-07-14 16:01 1681http://www.blogjava.net/Unmi/ar ... -
Spring Quartz 任务调度
2009-07-07 10:22 2216要执行的任务类:CronTask pa ... -
利用java.util.concurrent包实现多线程开发
2009-06-23 16:09 2595有一个网站列表,我们分别使用单线程和多线程来测试这个网站是否允 ... -
Ngnix初探
2009-06-15 17:03 3211Nginx是什么? ... -
使用eclipse生成文档 javadoc
2009-06-15 10:20 14061,在项目列表中按右键,选择Export(导出),然后在Exp ... -
Java 日期类操作
2009-06-11 14:43 2293java之中操作日期的类分别为: #系统的日期时间类 ... -
留个记号。
2009-06-10 16:01 1020Comparable Comparator具体区别 h ... -
Java中java.io.Serializable接口的应用
2009-06-10 10:33 2543在Java中java.io.Serializable 用于实现 ... -
Java中的克隆功能的应用
2009-06-09 13:30 1672在JAVA中对象的克隆有的时候是必要的,克隆分两种:浅克隆、深 ... -
判断SQL注入的字符
2009-06-08 13:13 1440判断SQL注入的字符 public static bo ... -
ThreadLocal的设计与使用(原理篇)
2009-06-05 17:17 1084在jdk1.2推出时开始支持java.lang.ThreadL ... -
探索Java类加载机制
2009-06-05 10:34 1718java虚拟【java.dll】存在于JRE目中下的bin目录 ... -
Nagios介绍
2009-05-26 13:33 1677系统管理员如何能够监视大量的机器和服务以便提前解决问题防止人们 ... -
Memecached实现缓存系统搭建。
2009-05-25 17:51 28421.在windows系统或Linux系统上安装memecach ... -
Java动态代理实现。
2009-05-25 13:33 945HelloWorld.java 接口文件 public i ...
相关推荐
Spring对JDBC进行了封装,提供了JdbcTemplate类,该类使Spring框架数据抽象层的基类,还有一些更高层次的类继承该类。使用该类要导入几个必须的jar包,分别是spring-jdbc-4.0.0.RELEASE.jar、spring-orm-4.0.0....
SSH笔记-Spring JdbcTemplate是关于如何在Spring框架中利用JdbcTemplate进行数据库操作的教程。Spring是一个广泛应用的Java企业级应用框架,它提供了多种数据访问工具,而JdbcTemplate就是其中之一,用于简化JDBC...
在本次的Java Spring框架学习笔记中,将对Spring框架的核心概念进行详细解析,包括Spring的 IOC(控制反转)、AOP(面向切面编程)、jdbcTemplate、事务管理、Spring5新特性以及与Mybatis的整合。本学习笔记提供了...
Spring Boot 是一个基于 Spring 框架的快速开发...这个完整的 Spring Boot 学习笔记涵盖了从基础到进阶的各个方面,通过学习和实践,你可以掌握 Spring Boot 开发的核心技能,从而高效地构建高质量的 Java 后端应用。
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
例如,你可以定义一个 `MySqlCommandExecutor` 类,其中有一个 `executeSelect()` 方法,该方法接受 SQL 查询语句作为参数,并通过 JdbcTemplate 的 `query()` 方法执行查询,返回结果集。这样的设计使得业务逻辑与 ...
此外,Spring还提供了多种模板类简化开发,例如JdbcTemplate用于数据库操作,RestTemplate用于HTTP客户端调用,这些模板类封装了常见的操作,使得代码更简洁、易读。 总的来说,Spring框架通过IoC和DI降低了组件...
Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。
JdbcTemplate的学习主要集中在如何使用模板方法执行SQL,理解其基本操作如查询、插入、更新和删除,以及如何处理结果集和异常。此外,学习如何配置数据源和JdbcTemplate实例,以及在多线程环境下正确使用。 在实际...
标题中的“Spring技术内幕 学习笔记”表明这是一份关于深入理解Spring框架核心机制的资料集合,主要关注Spring框架的内部工作原理和高级用法。描述中的“NULL”没有提供额外信息,但我们可以通过标签“源码”和...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
**Spring+JDBC集成学习笔记** 在Java Web开发中,Spring框架因其强大的功能和灵活性而被广泛应用。Spring提供了与JDBC的集成,使得数据库操作更加便捷、高效且易于管理。以下将详细介绍Spring如何与JDBC结合,以及...
SpringBoot学习笔记是一个压缩包,包含了对Spring Boot框架的详细学习资料。Spring Boot是Spring生态系统的简化启动器,旨在简化创建独立的、生产级别的基于Spring的应用程序。它通过提供默认配置来消除大量的XML...
这个"spring学习笔记,包括源码学习"的资料很可能包含了一系列关于Spring框架的核心概念、配置、使用方法以及深入源码的解析。 首先,让我们来了解一下Spring框架的基础知识。Spring的核心特性是依赖注入,它允许...
这份"Spring学习笔记"涵盖了Spring框架的基础到高级应用,对于想要深入理解并掌握Spring的开发者来说是一份宝贵的资料。 1. **Spring概述**:Spring是一个开源的Java平台,主要设计用于简化企业级应用开发。它提供...
### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...
【Spring Boot学习笔记】 Spring Boot是Java开发领域中一个非常受欢迎的框架,它极大地简化了创建独立、生产级别的基于Spring的应用程序的过程。Spring Boot的核心理念是“约定优于配置”,这使得开发者可以快速...
尚学堂的Spring学习笔记.doc可能包含对这些特性的详细解释、实例代码以及如何在实际项目中应用的指导,对于想要深入理解Spring 3.0的开发者来说是一份宝贵的参考资料。通过阅读这份笔记,你可以系统地学习Spring 3.0...
《Spring2.5 学习笔记》是一份深入解析Spring框架2.5版本的文档,旨在帮助开发者全面理解和掌握这一经典版本的核心特性与应用实践。Spring作为Java领域中最流行的轻量级框架之一,其2.5版本在当时的发布带来了许多...