- 浏览: 828785 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 8111. PropertyPlaceholderConfigur ... -
spring 发送MAILJavaMailSenderImpl
2014-01-02 14:32 865spring对mail的支持是org.springframe ... -
spring REST中的内容协商ContentNegotiatingViewResolver
2014-01-02 14:23 1664一.REST内容协商介绍 RESTfu ... -
Spring MVC异常处理
2014-01-02 14:13 457Spring3.0中对异常的处理方法一共提供了两种:一种是使 ... -
Spring AOP 的@Aspect (转)
2013-12-19 10:04 5655转自:http://blog.csdn.net/tangh ... -
spring @component的作用
2013-12-19 09:54 9711、@controller 控制器(注入服务) 2、@se ... -
Spring MVC性能提升
2013-12-18 18:06 7098这几天在做公司内部SpringMVC的培训,培训之余看了看大 ... -
Spring MVC简介
2013-08-27 20:09 963Spring MVC简介 1.Sp ... -
SpringMVC中HandlerInterceptorAdapter的使用
2013-08-27 20:04 1974一般情况下,对来自浏览器的请求的拦截,是利用Filte ... -
Spring注解_详解
2013-08-27 20:01 911spring注解 @Autowired 注释 将 ... -
SpringMVC方法返回值的学习(注解版)
2013-08-22 09:38 1407/** * 项目名称:Spring3mvc de ... -
spring中的Log4jConfigListener作用
2013-08-21 10:40 1359使用spring中的Log4jConfigListener ... -
srping 异常
2010-11-15 14:32 1202Spring数据访问的根异常是DataAccessExcep ... -
使用spring的jdbcTemplate-----将JDBC操作建模为细粒度的对象
2010-09-11 16:32 14801,更新操作对象 首先考虑如何将User插入操作建模为一个操 ... -
使用spring的jdbcTemplate-----使用具名参数
2010-09-11 15:01 3579在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限 ... -
使用spring的jdbcTemplate-----SimpleJdbcTemplate的使用
2010-09-11 12:39 58911,用简单的JDBC模板更新数据库 传统的Jdb ... -
使用spring的jdbcTemplate-----简化JdbcTemplate模板的创建
2010-09-10 20:41 2263每次使用的时候,都要创建一个JdbcTemplate新实例,这 ... -
使用spring的jdbcTemplate-----用JDBC模板查询数据库
2010-09-10 00:26 11700JdbcTemplate类声明了几个重载的query()模板方 ... -
spring中jdbcTemplate归纳2
2010-09-07 22:01 2143用语句创建器更新数据库第一个回调接口是PerparedStat ... -
spring中jdbcTemplate归纳1
2010-09-07 19:41 2874jdbcTemplate整理 为了实现基本的CRUD操作,s ...
相关推荐
SSH笔记-Spring JdbcTemplate,使用JdbcTemplate对数据库进行操作,使用具名参数和JDBC模板,简化操作
使用spring jdbc template简化jdbc数据库操作实例代码,简化操作,包括详细测试例子。
使用Spring提供的JdbcTemplate模板类实现对数据库的更新和查询操作、使用JdbcTemplate实现具体的DAO类、使用支持具名参数的JDBC模板类对数据库进行操作
spring boot 的项目,该项目已成功集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、...
actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...
actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、...
actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、...
使用JDBC模板的Spring MVC CRUD这是一个简单的SPRING MVC项目,其中我使用了Spring MVC,JDBC模板进行数据操作,而在数据库方面,我使用了MYSQL数据库。脚步- 1.创建名称为“ usersdb”的MYSQL数据库2.使用以下命令...
Enjoy(模板引擎),JdbcTemplate(通用JDBC操作数据库),JPA(强大的ORM框架),强大的ORM框架(强大的ORM框架),通用Mapper(快速操作Mybatis Mybatis),PageHelper(通用的Mybatis分页插件),mybatis-plus...
actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
我们用它来找出在开发时哪个数据库层是最好的我不是在比较性能,而是在日常任务中如何使用这些框架。 我准备了一些常见的方案,通常需要这些方案来实现以数据为中心的应用程序,然后使用各种非JPA DB层框架来实现...
│ 07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.mp4 │ 13 服务调用:如何正确理解 RetTemplate 远程调用实现原理?.mp4 │ 20 服务监控:如何使用 Actuator 组件实现系统监控?.mp4 │ 22 运行管理...
Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...
使用Spring JDBC初始化数据库 iv. 68.4. 初始化Spring Batch数据库 v. 68.5. 使用一个高级别的数据迁移工具 i. 68.5.1. 启动时执行Flyway数据库迁移 ii. 68.5.2. 启动时执行Liquibase数据库迁移 viii. 69. 批处理...
4.2 在Spring中使用JDBC 4.2.1 JDBC代码的问题 4.2.2 使用JdbcTemplate 4.2.3 把操作创建成对象 4.2.4 自增键 4.3 介绍Spring的ORM框架支持 4.4 用Spring整合Hibernate 4.4.1 ...
5 Spring数据库 106 5.1 Spring+JDBC 106 5.1.1 Jdbc编程特点 106 5.1.2引入DataSource 106 5.1.3 核心类JdbcTemplate 106 5.1.4 使用JdbcTemplate 106 5.1.5 继承JdbcDaoSupport 107 5.1.6 使用properties文件 107 ...
第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...