- 浏览: 115436 次
- 性别:
- 来自: 北京
最新评论
-
springdata_spring:
java程序语言学习教程 地址http://www.zuida ...
java多播 -
jveqi:
...
POI导出报表总结 -
liuhu2967:
大哥,我想问你个问题,防止前台(页面)连续触发导出EXCEL ...
POI导出报表总结 -
cqu903:
反射的性能你测试下就知道了,我之前试过,差了1000倍都不止
解决json转换hibernate 结果集对象 -
01jiangwei01:
怎么没写使用方式啊??
解决json转换hibernate 结果集对象
使用spring自己对数据库操作时,可以使用这三个数据库操作模板。
JdbcTemplate中方法主要传递sql,和数组参数,其方法要求sql占位符和参数数组位置需要对应,参考代码:
描述:1、在excute方法中可以传递一个ConnectionCallback回调接口,在接口方法中将获取connection对象,可以自定义进行操作。
2、结果集的封装可以使用spring的RowMapper接口对象,也可以使用rowBeanPropertyRowMapper,这个只需传递一个对象的class即可。
NamedParameterJdbcTemplate是对JdbcTemplate进行了封装,主要多了一层对参数的解析,sql使用特殊组合的占位符,参数主要使用map,这样sql的占位符和参数数据就不需要在顺序上一一进行对应,参照代码:
关键点描述:SqlParameterSource ps = new BeanPropertySqlParameterSource(user);可以使用SqlParameterSource来传递一个对象,来对sql的占位符进行填值,
KeyHolder keyHolder = new GeneratedKeyHolder();来捕获生成的主键值。
SimpleJdbcTemplate的使用建立在JDK1.5版本之上,里面封装了一个NamedParameterJdbcTemplate,主要添加了支持变长参数。
JdbcTemplate中方法主要传递sql,和数组参数,其方法要求sql占位符和参数数组位置需要对应,参考代码:
public class JdbcTemplateTest { static JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource()); /** * @param args */ public static void main(String[] args) { User user = findUser("zhangsan"); System.out.println("data:" + getData(1)); } static int addUser(final User user) { jdbc.execute(new ConnectionCallback() { public Object doInConnection(Connection con) throws SQLException, DataAccessException { String sql = "insert into user(name,birthday, money) values (?,?,?) "; PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, user.getName()); ps.setDate(2, new java.sql.Date(user.getBirthday().getTime())); ps.setFloat(3, user.getMoney()); ps.executeUpdate(); ResultSet rs = ps.getGeneratedKeys(); if (rs.next()) user.setId(rs.getInt(1)); return null; } }); return 0; } static Map getData(int id) { String sql = "select id as userId, name, money, birthday from user where id=" + id; return jdbc.queryForMap(sql); } static String getUserName(int id) { String sql = "select name from user where id=" + id; Object name = jdbc.queryForObject(sql, String.class); return (String) name; } static int getUserCount() { String sql = "select count(*) from user"; return jdbc.queryForInt(sql); } static List findUsers(int id) { String sql = "select id, name, money, birthday from user where id<?"; Object[] args = new Object[] { id }; int[] argTypes = new int[] { Types.INTEGER }; List users = jdbc.query(sql, args, argTypes, new BeanPropertyRowMapper( User.class)); return users; } static User findUser(String name) { String sql = "select id, name, money, birthday from user where name=?"; Object[] args = new Object[] { name }; Object user = jdbc.queryForObject(sql, args, new BeanPropertyRowMapper( User.class)); return (User) user; } static User findUser1(String name) { String sql = "select id, name, money, birthday from user where name=?"; Object[] args = new Object[] { name }; Object user = jdbc.queryForObject(sql, args, new RowMapper() { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setMoney(rs.getFloat("money")); user.setBirthday(rs.getDate("birthday")); return user; } }); return (User) user; } }
描述:1、在excute方法中可以传递一个ConnectionCallback回调接口,在接口方法中将获取connection对象,可以自定义进行操作。
2、结果集的封装可以使用spring的RowMapper接口对象,也可以使用rowBeanPropertyRowMapper,这个只需传递一个对象的class即可。
NamedParameterJdbcTemplate是对JdbcTemplate进行了封装,主要多了一层对参数的解析,sql使用特殊组合的占位符,参数主要使用map,这样sql的占位符和参数数据就不需要在顺序上一一进行对应,参照代码:
public class NamedJdbcTemplate { static NamedParameterJdbcTemplate named = new NamedParameterJdbcTemplate( JdbcUtils.getDataSource()); /** * @param args */ public static void main(String[] args) { User user = new User(); user.setMoney(10); user.setId(2); System.out.println(findUser1(user)); } static void addUser(User user) { String sql = "insert into user(name,birthday, money) values (:name,:birthday,:money) "; SqlParameterSource ps = new BeanPropertySqlParameterSource(user); KeyHolder keyHolder = new GeneratedKeyHolder(); named.update(sql, ps, keyHolder); int id = keyHolder.getKey().intValue(); user.setId(id); Map map = keyHolder.getKeys(); } static User findUser(User user) { String sql = "select id, name, money, birthday from user " + "where money > :m and id < :id"; Map params = new HashMap(); // params.put("n", user.getName()); params.put("m", user.getMoney()); params.put("id", user.getId()); Object u = named.queryForObject(sql, params, new BeanPropertyRowMapper( User.class)); return (User) u; } static User findUser1(User user) { String sql = "select id, name, money, birthday from user " + "where money > :money and id < :id"; SqlParameterSource ps = new BeanPropertySqlParameterSource(user); Object u = named.queryForObject(sql, ps, new BeanPropertyRowMapper( User.class)); return (User) u; } }
关键点描述:SqlParameterSource ps = new BeanPropertySqlParameterSource(user);可以使用SqlParameterSource来传递一个对象,来对sql的占位符进行填值,
KeyHolder keyHolder = new GeneratedKeyHolder();来捕获生成的主键值。
SimpleJdbcTemplate的使用建立在JDK1.5版本之上,里面封装了一个NamedParameterJdbcTemplate,主要添加了支持变长参数。
public class NamedJdbcTemplate { static NamedParameterJdbcTemplate named = new NamedParameterJdbcTemplate( JdbcUtils.getDataSource()); /** * @param args */ public static void main(String[] args) { User user = new User(); user.setMoney(10); user.setId(2); System.out.println(findUser1(user)); } static void addUser(User user) { String sql = "insert into user(name,birthday, money) values (:name,:birthday,:money) "; SqlParameterSource ps = new BeanPropertySqlParameterSource(user); KeyHolder keyHolder = new GeneratedKeyHolder(); named.update(sql, ps, keyHolder); int id = keyHolder.getKey().intValue(); user.setId(id); Map map = keyHolder.getKeys(); } static User findUser(User user) { String sql = "select id, name, money, birthday from user " + "where money > :m and id < :id"; Map params = new HashMap(); // params.put("n", user.getName()); params.put("m", user.getMoney()); params.put("id", user.getId()); Object u = named.queryForObject(sql, params, new BeanPropertyRowMapper( User.class)); return (User) u; } static User findUser1(User user) { String sql = "select id, name, money, birthday from user " + "where money > :money and id < :id"; SqlParameterSource ps = new BeanPropertySqlParameterSource(user); Object u = named.queryForObject(sql, ps, new BeanPropertyRowMapper( User.class)); return (User) u; } }
发表评论
-
JIT编译
2015-01-14 10:20 786http://ifeve.com/hotspot-jit/ -
Keep-Alive简介及在Tomcat中配置
2013-05-11 19:14 12625Keep-Alive功能使客户端到服务器端的连接持续有效,当出 ... -
java编程细节注意
2013-03-06 09:52 864最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
POI导出报表总结
2013-03-06 09:34 6313监控报表基于POI导出EXCE ... -
tomcat+apache分布式应用配置
2011-11-11 15:52 16661、 参考 、http://www.iteye.com/top ... -
ssh使用oscache 做分布式缓存初篇
2011-11-11 15:47 3524依赖jar包: jgroups-all.jar concurr ... -
获取节点下所有子节点
2011-06-10 15:18 3223在开发过程中,经常遇到多级数据,譬如部门等,如果想查一个节点下 ... -
java动态代理之一:java Proxy实现
2011-03-26 13:42 1341动态代理类是一个实现在创建类时在运行时指定的接口列表的类。 ... -
解决json转换hibernate 结果集对象
2011-03-18 17:30 4395在使用ext+ssh框架过程中,当使用jsonlib 转换 h ... -
jbpm任务执行问题
2010-12-28 17:30 988如果一个流程 开始->任务1->任务2->任 ... -
java多播
2010-12-09 10:44 18549DatagramSocket只提供一对一的UDP服务。有时 ... -
对新浪大片只管看不能下载说NO!
2010-12-08 10:29 1926工作无聊,找个事情做做。想想都郁闷,前段想做销售,业务面试 ... -
java模拟http get和post 提交
2010-12-07 16:19 8029使用httpclient工具包commons-httpclie ... -
java实现缩略图和抓屏幕
2010-12-07 10:09 1077import java.awt.Container; imp ... -
初学jbpm总结<一>
2010-11-17 17:45 1115最近想自己搞个OA系统,考虑到流程管理,想使用工作流jbp ... -
java之IO 总结和笔记
2010-10-26 10:38 1034创建一个文件 File f=new File(" ... -
java正则表达式抽取html数据
2010-10-21 20:59 9427由于项目需求,需要抓取一些网站数据,于是这两天研究了下java ... -
单例模式
2010-08-14 19:07 1102单例模式:确保一个类只有一个实例,并提供一个全局访问点。 ... -
Class的获取与使用
2010-06-30 20:07 1144package study.basic; /** * ... -
在myeclipse配置heritrix1.14.3
2010-06-24 14:00 2942[/b]最近要做个站内搜索,准备使用heritrix爬行数据, ...
相关推荐
Spring JDBC通过提供JdbcTemplate和SimpleJdbcTemplate等工具类,帮助开发者以更安全、更易于管理的方式与数据库进行交互,降低了传统JDBC代码的复杂性。下面我们将详细探讨Spring JDBC的核心概念、工作原理以及如何...
Spring的JDBC模板包括JdbcTemplate、NamedParameterJdbcTemplate和SimpleJdbcTemplate,它们简化了数据库访问。DataSource是Spring与数据库交互的关键,它可以是JDBC驱动定义的数据源、JNDI查询的数据源,或者连接池...
Spring提供的JdbcTemplate、NamedParameterJdbcTemplate和SimpleJdbcTemplate模板类消除了手动管理数据库连接、预编译SQL语句以及事务处理的繁琐工作。开发者只需关注业务逻辑,无需关心底层细节。例如,使用...
3. **JDBC抽象层增强**:Spring 3.0改进了JdbcTemplate和SimpleJdbcTemplate,同时引入了NamedParameterJdbcTemplate,提供了更方便的参数绑定。 4. **Spring MVC增强**:对Spring MVC进行了大量优化,增加了...
Spring JDBC模块通过`JdbcTemplate`和`SimpleJdbcTemplate`类提供了数据库访问的抽象层,简化了数据库操作。这两种模板类都提供了事务管理、异常转换以及SQL语句执行等功能,使得开发者无需过多关注底层的数据库连接...
Spring 提供了三种 JDBC 模板:JdbcTemplate、NamedParameterJdbcTemplate 和 SimpleJdbcTemplate。JdbcTemplate 是最基本的 JDBC 模板,提供了基本的数据库操作方法。NamedParameterJdbcTemplate 能够在执行查询时...
在Spring框架中,Spring JDBC通过一系列的抽象层,如JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate等,将数据库访问的繁琐细节隐藏起来,从而减少了代码量,提高了代码的可读性和可维护性。...
这两个基类为自定义DAO提供了便利,它们提供了对JdbcTemplate或SimpleJdbcTemplate的引用,减少了重复代码。 10. **Best Practices** - 使用PreparedStatement而非Statement,防止SQL注入。 - 合理配置事务边界...
其中,Spring提供的三个主要模板类——`JdbcTemplate`、`NamedParameterJdbcTemplate`和`SimpleJdbcTemplate`,极大地简化了数据库操作,减少了代码量,提高了代码的可读性和可维护性。 #### JdbcTemplate `...
在Spring中使用JDBC,我们可以利用`JdbcTemplate`或`SimpleJdbcTemplate`,这两个都是对JDBC的轻量级封装,提供了更安全、更易于使用的API。例如,`UserServiceImp`可能包含了这些模板方法来执行SQL查询、更新、插入...
2. **JdbcTemplate**:这是Spring JDBC最常用的工具类,提供了大量的模板方法,用于执行SQL查询、更新、调用存储过程等操作,大大减少了手动处理结果集和异常的情况。 3. **SimpleJdbcTemplate**:这是JdbcTemplate...
它包括DataSource、JdbcTemplate、SimpleJdbcTemplate以及NamedParameterJdbcTemplate等组件。这些组件使得数据库操作变得更加简单、健壮和易于测试。 1. **DataSource**: DataSource是连接数据库的工厂,Spring...
Spring JDBC提供了一些关键组件,如JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate,它们帮助开发者更安全、更高效地执行SQL语句。例如,JdbcTemplate提供了一种模板化的API,可以避免编写大量的...
7. **JDBC抽象层增强**:Spring 3.0改进了JdbcTemplate和SimpleJdbcTemplate,提供了更强大的数据库操作支持,同时引入了NamedParameterJdbcTemplate,使得参数化查询更加直观和安全。 8. **集成WebSocket**:虽然...
6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.4. 声明通知 6.2.5. 引入(Introduction) 6.2.6. ...
SimpleJdbcTemplate是对JdbcTemplate和NamedParameterJdbcTemplate功能的进一步简化,利用了Java 5的特性,如泛型、varargs和autoboxing,提供了更简洁的API。它需要JDK 5或更高版本,并且能与SimpleJdbcInsert和...
Spring JDBC的主要组件包括JdbcTemplate、SimpleJdbcTemplate和NamedParameterJdbcTemplate。 ### 2. JdbcTemplate使用 JdbcTemplate是Spring JDBC的核心,它提供了模板方法来执行SQL查询和更新。使用JdbcTemplate...
当Spring与JDBC结合使用时,Spring提供了高级抽象,如JdbcTemplate和NamedParameterJdbcTemplate,可以更方便地执行SQL查询,处理结果集,并管理数据库连接。 压缩包中的文件如下: 1. spring.jar:这是Spring框架...
例如,如何使用`JdbcTemplate`进行简单的查询和更新操作,以及如何在复杂场景下利用`NamedParameterJdbcTemplate`处理带参数的SQL。 五、最佳实践与注意事项 1. **使用PreparedStatement**:Spring JDBC鼓励使用...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...