一个data patch清晰的代码模板
来源:互联网 发布:桃谷绘里香 知乎 编辑:程序博客网 时间:2024/04/29 16:46
一. 背景:
今天公司上了一个项目, 涉及到数据的迁移,其实代码很简单,只是有些地方在以后编码过程中需要注意,写下这篇日志备忘。
二. 代码:
1. 基础代码:
public class DataPatch {private static Logger logger = Logger.getLogger(DataPatch.class.getName());public static void main(String[] args) {try {logger.warn("start the Job...");long begin = System.currentTimeMillis();DataPatch patch = new DataPatch(); List<String> productList = patch.dataPrepare();patch.processData(productList);long end = System.currentTimeMillis();logger.info("<< Total spent time: " + (end - begin) / 1000 + "s >>"); // <-- case 1logger.warn("end the Job...");} catch (Exception e) {logger.error(e.getMessage(), e);} finally {System.exit(0);}}// prepare the patch datapublic List<String> dataPrepare() throws Exception {List<String> list = new ArrayList<String>();BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/home/zdp/supplier.txt"))); // <-- case 2String line = null;while ((line = reader.readLine()) != null) {list.add(line.trim());}if (reader != null) {reader.close();}return list;}// process the businesspublic void processData(List<String> list) {Connection conn = null;for (int i = 0; i < list.size(); i++) {String productId = null;try { // <-- case 3conn = getConnection();updateSql1(conn, productId);querySql(conn); // <-- case 4for(...){ updateSql2(conn, productId);}conn.commit(); // <-- case 5conn.close();logger.info("-->> commit... ");} catch (Exception e) {logger.error("error happens: " + productId, e); // <-- case 6conn.rollback();if (conn != null) {conn.close();}}}}// query sqlpublic Product querySql(Connection conn) throws Exception{...}// update sql 1public Boolean updateSql1(Connection conn, String productId) throws Exception{...}// update sql 2public Boolean updateSql2(Connection conn, String productId) throws Exception{...}}case 1. 记录时间日志case 2. 读取数据代码
case 3. 将try catch的代码放在循环product id的里面, 当出错的时候,只把这个product id回滚
case 4. 读取数据和更新数据要使用同一个连接, 否则会读取不到更新的数据
case 5. 进入循环的时候获取数据库连接, 循环结束时提交并关闭连接, 循环完一个product id提交一次
case 6. catch异常的时候打印product id,数据库回滚, 注意要关闭连接
0 0
- 一个data patch清晰的代码模板
- 编写清晰的代码
- 快速排序模板 代码很清晰
- Core Data模板代码
- 层层清晰:面向对象的代码模型
- 如何写一曲漂亮工整清晰的代码
- 怎么让代码的逻辑更清晰?
- 应该形成清晰的代码风格
- 一个原理清晰的连接池
- MD5 和 SHA的一个清晰实现
- 一个JS TAB 特效 代码清晰明了,一看就懂!
- “好的代码”和“不清晰的代码”的区别
- 开发代码-如何开发易于扩展和清晰的代码
- 清晰的。。。。。。
- 据说是来自chrome的代码里的一个模板
- [代码模板]将一个32位的二进制串反转
- 一个基于velocity模板引擎的代码生成器
- T4模板——一个神奇的代码生成器
- maven 打包可执行jar 问题小结
- Android学习笔记16:Button控件图文混排效果的实现
- android闪屏欢迎界面
- iPhone6/6S的适配
- 让你的终端用着顺手漂亮——MAC OS 终端的设置
- 一个data patch清晰的代码模板
- html js highcharts绘制圆饼图表
- getViewTreeObserver详解
- HashCode 和Equals 测试
- 每天一点儿JAVA(继承操作)
- 内省
- hdoj 3001 Travelling 【3进制+旅行商】
- dubbo入门
- 怎么区分沪股 创业版 深股