- 浏览: 840483 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
1,用语句创建器更新数据库
第一个回调接口是PreparedStatementCreator,实现这个接口来覆盖整个更新过程语句创建任务和参数绑定任务。为了将一个
User对象插入到数据库中,要像下面这样来实现PreparedStatementCreator接口。
public class InsertPreparedStatementCreator implements PreparedStatementCreator{ private User user; public InsertPreparedStatementCreator(User user){ this.user = user; } public PreparedStatement createPreparedStatement(Connection conn){ String sql = "insert into user(username,password) values(?,?); PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); return ps; } }
在实现PreparedStatementCreator接口时,会得到数据库连接,它将作为createPreparedStatement()方法的参数,要做的就是
在连接上创建PreparedStatement对象,作为方法的返回值,注意,方法签名中声明抛出了SQLException,这意味着不需要亲自
处理异常。
现在就可以用这个语句创建器来插入数据了。
public class JdbcUserDao implements UserDao{ ........... public void insert(User user){ JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.insert(new InsertPreparedStatementCreator(user)); } }
一般来说,如果接口只在一个方法里使用,最好将PreparedStatementCreator接口和其他的回调接口做为内部类来实现,这是
应为可以直接从内部类中存取局部变量和方法参数,而不是将它作为构造参数进行传递,对这些变量和参数的唯一限制是将它
们必须被声明为final的。
public class JdbcUserDao implements UserDao{ ........... public void insert(final User user){ JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(new PreparedStatementCreator(Connection conn)throws SQLException{ String sql = "insert into user(username ,password) values (?,?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); return ps; }); } }
2,用语句设值器更新数据库
第二个回调接口是PreparedStatementSetter,顾名思义,它只执行整个过程中的参数绑定任务。
public class JdbcUserDao implements UserDao{ public void insert(final User user){ String sql ="insert into user vlaues (?,?)"; JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(sql,new PreparedStatementSetter(){ public void setValue(PreparedStatement ps)throws Exception{ ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); } }); } }
另一个版本的update()模板方法接受sql语句和PreparedStatementSetter对象作为参数,该方法会替换从SQL语句中创建
PreparedStatement对象,使用这个接口,所要做的就是参数绑定到PreparedStatement对象上。
3,用SQL语句和参数值更新数据库
最后,最简单的update()方法接受SQL语句和对象数组作为语句参数,它会替换从SQL语句中创建的PreparedStatement对象并绑
定参数,因此,不必覆盖整个更新过程的任何任务。
public JdbcUserDao implements UserDao{ public void insert(final User user){ String sql ="insert into user values (?,?)"; JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(sql,new Object[]{user.getUsername(),user,getPassword()}); } }
前面介绍了三种不同的update()方法,最后一种最简单,因为不必实现任何接口,与之相反,第一种最灵活,可以在执行
PreparedStatement对象之前对它进行任意预处理,
4,批处理更新数据库
假定我们一次插入一批数据到数据库,如果多次调用insert()方法,速度会非常慢 ,因为SQL语句要重复的编译,因此,最好
在DAO接口上添加一个新的方法,插入已批量用户。
public interface UserDao{ ....... public void insert(List<User> user); }
JdbcTemplate模板也为批量跟新数据提供了batchUpdate()模板方法,它需要一个sql语句和一个
BatchPreparedStatementSetter对象作为参数,这个 方法中,语句编译一次,执行多次。
public class JdbcUserDao implements UserDao{ public void inser(final List<User> user){ String sql ="insert into User values(?,?)"; JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.batchUpdate(sql,new BatchPreparedStatementSetter(){ public int getBatchSize(){ return user.size(); } public void setValue(PreparedStatement ps,int i)throws SQLException{ User user = user.get(i); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); } }); } }
使用下面的测试数据,批量插入数据
public class Main{ public static void main(String[] args){ User use1 = new User("kang","fei"); User use2 = new User("zhang","fei"); UserDao userDao = =new JdbcUserDao(); userDao.insert(Arrays.asList(new User[]{use2,use2})); } }
发表评论
-
Spring的PropertyPlaceholderConfigurer应用
2014-01-02 14:43 8341. PropertyPlaceholderConfigur ... -
spring 发送MAILJavaMailSenderImpl
2014-01-02 14:32 893spring对mail的支持是org.springframe ... -
spring REST中的内容协商ContentNegotiatingViewResolver
2014-01-02 14:23 1690一.REST内容协商介绍 RESTfu ... -
Spring MVC异常处理
2014-01-02 14:13 475Spring3.0中对异常的处理方法一共提供了两种:一种是使 ... -
Spring AOP 的@Aspect (转)
2013-12-19 10:04 5696转自:http://blog.csdn.net/tangh ... -
spring @component的作用
2013-12-19 09:54 9981、@controller 控制器(注入服务) 2、@se ... -
Spring MVC性能提升
2013-12-18 18:06 7132这几天在做公司内部SpringMVC的培训,培训之余看了看大 ... -
Spring MVC简介
2013-08-27 20:09 983Spring MVC简介 1.Sp ... -
SpringMVC中HandlerInterceptorAdapter的使用
2013-08-27 20:04 1994一般情况下,对来自浏览器的请求的拦截,是利用Filte ... -
Spring注解_详解
2013-08-27 20:01 930spring注解 @Autowired 注释 将 ... -
SpringMVC方法返回值的学习(注解版)
2013-08-22 09:38 1433/** * 项目名称:Spring3mvc de ... -
spring中的Log4jConfigListener作用
2013-08-21 10:40 1377使用spring中的Log4jConfigListener ... -
srping 异常
2010-11-15 14:32 1225Spring数据访问的根异常是DataAccessExcep ... -
使用spring的jdbcTemplate-----将JDBC操作建模为细粒度的对象
2010-09-11 16:32 15181,更新操作对象 首先考虑如何将User插入操作建模为一个操 ... -
使用spring的jdbcTemplate-----使用具名参数
2010-09-11 15:01 3602在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限 ... -
使用spring的jdbcTemplate-----SimpleJdbcTemplate的使用
2010-09-11 12:39 59081,用简单的JDBC模板更新数据库 传统的Jdb ... -
使用spring的jdbcTemplate-----简化JdbcTemplate模板的创建
2010-09-10 20:41 2288每次使用的时候,都要创建一个JdbcTemplate新实例,这 ... -
使用spring的jdbcTemplate-----用JDBC模板查询数据库
2010-09-10 00:26 11781JdbcTemplate类声明了几个重载的query()模板方 ... -
spring中jdbcTemplate归纳2
2010-09-07 22:01 2162用语句创建器更新数据库第一个回调接口是PerparedStat ... -
spring中jdbcTemplate归纳1
2010-09-07 19:41 2904jdbcTemplate整理 为了实现基本的CRUD操作,s ...
相关推荐
标题 "jdbcTemplate-spring对jdbc的支持" 涉及到的是Spring框架中的一个核心组件——JdbcTemplate,它是Spring对Java数据库连接(JDBC)的一种封装,用于简化数据库操作。JdbcTemplate提供了一种模板方法模式,使得...
1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法模式将常见的JDBC操作进行了封装,如执行SQL查询、更新、调用存储过程等。开发者只需要关注SQL语句和参数,而无需处理连接创建、关闭、异常处理等繁琐...
Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行、结果集处理等进行了抽象,使得开发者可以更专注于业务逻辑,而无需过多关注数据库访问的细节。同时,它还提供了事务...
`JdbcTemplate`是Spring提供的一种模板方法模式实现,它封装了JDBC的常用操作,如执行SQL查询、更新等,提供了异常转换和数据源管理等功能。通过使用`JdbcTemplate`,开发者可以编写出更简洁、更健壮的数据库访问...
SpringJdbcTemplate能够自适应多种数据库,这是因为它的底层使用了JDBC的规范,而不同的数据库厂商都实现了JDBC API。这使得你可以使用相同的代码来连接MySQL、Oracle、PostgreSQL等不同类型的数据库,只需更换相应...
Spring JDBC模块是Spring框架对Java数据库连接(JDBC)的一层抽象,它简化了数据库操作,通过提供模板类和 dao 支持来减少样板代码。Spring JDBC 提供了 JdbcTemplate 和 NamedParameterJdbcTemplate,这两个工具类...
1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...
Spring-JDBC通过提供模板类(如JdbcTemplate和NamedParameterJdbcTemplate)以及数据源管理,使得开发者能够更高效地执行SQL查询。 在博文链接中,作者可能分享了一个使用Spring-JDBC的实际示例,虽然具体内容未给...
Spring JDBC Template是Spring框架的一部分,它提供了一种简化数据库操作的方式,通过抽象出低级的JDBC细节,使开发者能够更高效、更安全地处理数据库交互。连接池是数据库资源管理的重要工具,它可以提高数据库访问...
1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...
JdbcTemplate是Spring JDBC模块中的核心组件,它提供了一种模板化的JDBC操作方式,降低了数据库访问的复杂性,同时保持了良好的封装和异常处理机制。在使用Spring JDBC之前,我们需要确保引入了必要的jar包。这里...
通过使用模板方法设计模式,Spring-JdbcTemplate能够在不牺牲灵活性的同时,保证了代码的简洁性和可维护性。 接着,让我们来看看DataSourceTransactionManager,它是Spring提供的事务管理器,主要用于管理基于...
Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得开发者可以避免编写大量的JDBC模板代码。这个抽象层包括了事务管理、异常翻译和连接池集成等功能,提高了代码的可读性和可维护性。 2. **数据源注入** ...
Spring JDBC Template被用来简化数据库操作,它提供了一种模板方法模式,将SQL执行、结果集处理等细节进行了封装,使得开发者只需要关注SQL语句和处理结果即可。例如,登录验证可能涉及查询用户表,查找与输入用户名...
1. `JdbcTemplate`:这是Spring JDBC的核心类,提供了模板方法来执行SQL查询、更新语句和存储过程。 2. `SimpleJdbcInsert`和`SimpleJdbcCall`:简化了插入操作和调用存储过程的过程。 3. `...
JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database Connectivity)的轻量级封装。通过使用JdbcTemplate,开发者可以避免编写大量的样板代码,如打开和关闭连接、处理结果集...
Spring JDBC模块的主要目标是减少对JDBC API的直接依赖,通过提供一种更加高级、易于使用的编程模型来简化数据库访问。在这个“spring_jdbc_4.0.0.zip”压缩包中,包含的是Spring JDBC 4.0.0版本的jar文件,即...
在Spring框架中,JdbcTemplate是用于简化数据库操作的重要组件,特别是在处理JDBC(Java Database Connectivity)时。在Spring4中,JdbcTemplate提供了事务管理的功能,使得开发者能够更好地控制数据库操作的原子性...
### Spring-JdbcTemplate...总之,Spring-JdbcTemplate通过其简洁的API和强大的功能,极大地简化了JDBC编程,是Spring框架中不可或缺的一部分,对于Java后端开发人员来说,掌握其使用方法是提升数据库操作效率的关键。