[框架那点事儿-快速开发季]编写自己的数据持久层(5)更新/批量更新/批量插入

news/2024/7/4 1:31:25 标签: 框架, object, string, sql, 数据库, class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

在前面几篇文章中,我们进行了针对于单值插入,查询(多种)的API的封装,在日常开发过程中,更新是最重要的操作之一,所以在接下来的文章中,将重点针对于更新操作进行封装。目标是封装出简便易用的API,提高开发效率。

 

本章节增加三个针对于对象的更新操作API: 

 

1、单个对象的更新

2、批量插入

3、批量更新

 

其中单个对象的更新,我们依赖于组装update的class="tags" href="/tags/SQL.html" title=sql>sql来使用jdbcTemplate的update方法完成。

 

对于批量更新,我们使用batchUpdate来完成,我们要做的工作,主要是提取其中针对于setValue的重复操作,还是那个目标,隔离具体的class="tags" href="/tags/ShuJuKu.html" title=数据库>数据库表和字段,我们通过使用Field[]来保存DO类的属性,然后 严格按照相同的次序生成更新class="tags" href="/tags/SQL.html" title=sql>sql和在setValue回调函数中进行赋值操作。这样说可能有点绕,但会看代码具体实现。

 

对于批量插入,我们使用SqlParameterSource来完成,当然,这里也可以像批量更新一样,使用batchUpdate来执行insert语句,但是那样做的并不见得比使用现有资源来的性价比高。同时,对于大批量的插入,我们引入了分页的机制,分批次插入以提升效率。

 

在测试环境下,这个效率平均在:1500-2000条/分钟。 普通台式机,双核,远程class="tags" href="/tags/ShuJuKu.html" title=数据库>数据库条件下。在小型机等环境下或许会更好一点。

 

 

其中插入class="tags" href="/tags/ShuJuKu.html" title=数据库>数据库的操作方法:

 

 

 

其他的代码请见下面详细:

 

 

 

分页以及table自定义注解代码 (略) 请参见前面章节。

 

部分代码重构过以提高复用率,截止目前以此版本为准。

 


http://www.niftyadmin.cn/n/1639141.html

相关文章

如何把数据快速批量添加到Elasticsearch中

问题来源 最近新做一个项目,有部分搜索比较频繁的数据,而且量级比较大,预计一两年时间很可能达到100G,项目要求不要存在数据库中,最终出来有两个方案,一个是使用Protocol Buffers存储在文件上,…

[框架那点事儿-快速开发季]编写自己的数据持久层(6)思考

这一章题目是思考,是因为工作进行到现在,我开始反思着一些API,到底能覆盖多少的日常工作,带来多少的便捷。从最开始的插入开始,到现在已经完成了根据sql来实现分页查询,我发现用这种纯面向对象的API封装思想…

[框架那点事儿-快速开发季]编写自己的数据持久层(7)总结篇

// 备注:本章节的代码较多,在IE下显示有点问题,请用firefox浏览,或者请留下邮箱,我会将整个工程打包发送 在前面的六篇文章中,针对日常开发常用到的DB的操作对spring框架的jdbcTemplate进行了一定的封装&am…

Java生成并导出Json文件

将一个list集合转换成json文件并导出&#xff1a; 数据集合&#xff1a;List<Object> agencyList new ArrayList<Object>();Map<String, Object> agencyMap new HashMap<>();agencyMap.put("agencyName",agencyName);agencyMap.put("…

使用JST模板引擎加快页面交互内容开发

首先看一个需求&#xff1a; 页面上存在一个select box&#xff0c;当选择了下拉框中的一个选项的时候&#xff0c;异步请求获取数据并在页面某个区域显示出来。而且这个显示区域是具有样式和自己固有的js等内容的&#xff0c;并非简单的静态文字。 如果用传统的js方式&#x…

[前端控件开发]freemarker框架下编写自己的分页器

对于web系统来说&#xff0c;分页器就好像是一个器官&#xff0c;是无论如何都必须要具备的一项功能&#xff0c;而分页器呢&#xff0c;是既通用又无怪乎那么几种样子&#xff0c;所以我们这里就利用添加了freemarker框架的一个系统来做自己的分页器。先看下结果样子&#xff…

优化Elasticsearch查询性能

给文件系统缓存提供内存 Elasticsearch严重依赖于文件系统缓存&#xff0c;以便快速进行搜索。 通常应该确保至少有一半的可用内存进入文件系统缓存&#xff0c;以便Elasticsearch可以将索引的热区域保留在物理内存中。 使用更快的硬件 如果搜索受I / O限制&#xff0c;应该调…

[小插曲]spring+freemarker中文乱码了,囧

spring freemarker 中文乱码了&#xff0c;其实是配置的时候粗心忘了配置viewResolver的编码&#xff0c;只配置了freeMarkerConfigurer的default-coding。 配置一下即可&#xff1a; <bean id"freeMarkerConfigurer"class"org.springframework.web.servlet…