Spring学习点滴,《Spring in Action》笔记(二)

第四章. 征服数据库

--------------------------------------------------------------------------------

31. Spring 把数据访问流程中的固定部分和可变部分分开,分别映射成两截然不同的类,模板 (Template)和回调(Callback),模板管事物控制、资源管理以及异常处理;回调实现特定于应用的部 分--创建 statement、绑定参数、以及整理结果集。模板方法模式的优秀应用(P123)

32. JdbcTemplate template = new JdbcTemplate(myDataSource); 构造。 所有 Spring Dao 模板类 是线程安全的,可以为每一个 DAO 配置一个 JdbcTemplate 属性,也可以让 DAO 类继承 JdbcDaoSupport,然后在 DAO 类中用 getJdbcTemplate() 获取到 JdbcTemplate 进行数据库操作。书中 的做法是给每个 Dao 加一个 JdbcTemplate 属性,记录的日志略有不同,实际中注意(P127)

33. JdbcTemplate 的 execute() 方法不可带 sql 参数,即不存在 execute(String sql, Object[] params) 方法,而 update 才有 update(String sql, Object[] params) 方法可以,还能指定每一字段 的类型(通过第三个参数 int[] argTypes),保证了类型安全,130页说 JdbcTemplate 提供了 execute (String sql, Object[] params) 是错误的。(P130)

34. JdbcTemplate 类创建了 PreparedStatementCreator(createPreparedStatementCreator (Connection conn)) 和 PreparedStatementSetter(setValues(PreparedStatement ps)), 批量更新时 需要创建自己的 BatchPreparedStatementCreator 类:

BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter(){  public 

int getBatchSize(){ return persons.size();}  public void setValues(PreparedStatement 

ps, int index) throws SQLException{    Person person = (Person) persons.get

(index);    ps.setInt(0,person.getId().intValue());    ......   }

};getJdbcTemplate().batchUpdate(sql,setter);BatchPreparedStatementSetter setter 

= new BatchPreparedStatementSetter(){  public int getBatchSize(){ return persons.size

();}  public void setValues(PreparedStatement ps, int index) throws SQLException{

    Person person = (Person) persons.get(index);    ps.setInt(0,person.getId

().intValue());    ......  }};getJdbcTemplate().batchUpdate

(sql,setter);

把传入的List<Person>批量的进行数据库相应操作(P131)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索spring
, spring jdbctemplate
, 模板
, 方法
, jdbctemplate
, jdbcdaosupport
, spring batchupdate
, preparedstatement
person
,以便于您获取更多的相关知识。

时间: 2024-09-17 04:01:35

Spring学习点滴,《Spring in Action》笔记(二)的相关文章

Spring学习点滴,《Spring in Action》笔记(一)

第二章:装配 Bean -------------------------------------------------------------------------------- 1. <ref>标签中的 bean, local, parent 三个属性的区别(P53) 2. <list><value...</list>和<set><value...</set>可以换着用都 可以为 List, Set 以及数组属性赋值(P55)

Spring学习点滴,《Spring in Action》笔记(三)

第十章. 使用其他 Web 框架 41. Spring 提供了两种与 Struts 集成的方式 1) 让你的 Action 继承 org.springframework.web.struts.ActionSupport 2) 将请求委托给作为 Spring Bean 管理的 Struts action 来自理(P312) 42. 为了让 Struts 能访问 Spring 管理的 Bean,必须在 struts-config.xml 中注册一个知道 Spring 上下文的 ContextLoad

Spring学习点滴,《Spring in Action》笔记(四)

61. 更为精彩的是自动代理的方式来总体配置各分散类中方法的事物属性,结合使用 DefaultAdvisorAutoProxyCreator, TransactionAttributeSourceAdvisor 和 TransactionInterceptor (我还需要详细理清楚)(P181) 62. 当使用自动代理时,MethodMapTransationAttributeSource 就能很多的派上用场了,它的 methodMap 属性中可以指定哪个类的哪个方法,可以使用通配符(P182)

Spring学习点滴,《Spring in Action》笔记(五)

第八章. 建立 Web 层 71. Spring 的 MVC 和 Struts 的 MVC 基本一致 Spring 的控制流程是:请求->DispatcherServlet->从 HandlerMapping 中查询到处理该请求 的 Controller-> Controller 的 handleRequest 方法调用业务方法,最后返回 ModelAndView (ModelAndView告诉了 DispatcherServlet 转向到哪个视图) Struts 的控制流程是:请求-&

Spring学习点滴,《Spring in Action》笔记(七)

91. Spring MVC 还提供了一个特别点的 Controller 类型就是 ThrowawayController,它自成一个接 口,ThrowawayController 和 Controller 的关系是平行的.什么叫做 ThrowawayController 呢,中文 叫做一次性控制器,也就像一次性筷子那样用完即丢,下次要用又拿新的.表现在实例上就是相应 Bean 配置为 singleton="false",每次初始化一个新实例.与其他 Controller 的区别完全就

Spring学习点滴,《Spring in Action》笔记(六)

81. Spring 提供了丰富的控制器层次,方便根据实际需求选择实现或继承那一种控制器.不像 Struts 和 WebWork 比较平坦的 Action 层次.比如 ThowawayController/MultiActionController/SimpleFormController 等. (P254) 82. 继承 AbstractController 要覆盖的方法是 handleRequestInternal(request,response):new ModelAndView("co

Spring学习笔记2之表单数据验证、文件上传实例代码_java

在上篇文章给大家介绍了Spring学习笔记1之IOC详解尽量使用注解以及java代码,接下来本文重点给大家介绍Spring学习笔记2之表单数据验证.文件上传实例代码,具体内容,请参考本文吧! 一.表单数据验证 用户注册时,需要填写账号.密码.邮箱以及手机号,均为必填项,并且需要符合一定的格式.比如账号需要32位以内,邮箱必须符合邮箱格式,手机号必须为11位号码等.可以采用在注册时验证信息,或者专门写一个工具类用来验证:来看下在SpringMVC中如何通过简单的注释实现表单数据验证. 在javax

spring学习笔记(16)趣谈spring 事件机制[2]:多监听器流水线式顺序处理

上一篇我们使用到的ApplicationListener是无序的,结合异步调度它能满足了我们的大部分应用场景,但现在我们来个另类的需求,我们来模拟一条作业调度流水线,它不能异步,必须按照先后次序执行不同的任务才能得到我们的最终结果. 需求示例:现在假如华中科技大学的小白想要为它的智能机器人作品申报国家创新奖,需要经过学校.省级创新科研机构.国家创新科研机构逐层审核.我们尝试通过事件来实现,核心就在监听器实现SmartApplicationListener接口.示例如下: 1. 配置事件发布者小白

spring学习笔记(21)编程式事务配置,service层概念引入

访问数据库事务导入 在我之前的文章<spring学习笔记(19)mysql读写分离后端AOP控制实例>中模拟数据库读写分离的例子,在访问数据库时使用的方法是: public <E> E add(Object object) { return (E) getSessionFactory().openSession().save(object); } 通过直接开启session而后保存对象.查询数据等操作,是没有事务的.而如果我们的项目规模变大,业务逻辑日益复杂,我们在一个方法中进行大