通过xml配置来实现数据库的批量修改一
来源:互联网 发布:网络怎么可以赚钱 编辑:程序博客网 时间:2024/05/22 17:49
需求来源
近期由于项目的图片服务器迁移导致大量写死在数据库中图片路径需要修改。
实现思路
通过百度了解到可以通过mysql的REPLACE
函数来进行局部替换数据内容,类似这样的语句:
"UPDATE "+tableName+" SET "+column+" = REPLACE ( "+column + ",'"+oldValue+"','" +newValue+"')"
。
版本演化一
我们了解基本实现思路,那么进行简单的数据替换就没问题了。比如本来的数据是这样http://www.oldImage.com/upload/image/1.jpg
需要改成http://www.newImage.com/upload/image/1.jpg
,你应该知道如何实现了吗?好了,我们开始慢慢实现我们的小工具。首先,我们把基础设施搭建好,定义好SQLUtils类:
public class SQLUtils { /** * 数据源 */ private final DruidDataSource ds; /** * 表和列集合 */ private Map<String, List<String>> table_column; /** * 日志工具类 */ private Logger log = LoggerFactory.getLogger(SQLUtils.class); /** * 初始化数据源 * * @param db 数据库 * @param username 用户名 * @param password 密码 */ public SQLUtils(String db, String username, String password) { ds = new DruidDataSource(); ds.setUrl(db); ds.setUsername(username); ds.setPassword(password); initTableAndColumn(true); }}
然后我们再来定义一个替换数据的方法:
/** * 部分替换数据 * @param tableName * 表名 * @param column * 列名 * @param oldValue * 旧值 * @param newValue * 新值 */ public void update(String tableName,String column, String oldValue, String newValue) { Connection conn = null; try { conn = ds.getConnection(); // 拼接sql String sql = "UPDATE " + tableName + " SET " + column + " = REPLACE ( " + column + ",'" + oldValue + "','" + newValue + "')"; // 日志输出 log.info("sql:{}", sql); int count = SqlExecutor.execute(conn, sql); log.info("影响行数:{}", count); } catch (SQLException e) { log.error(e.getMessage()); } finally { DbUtil.close(conn); } }
接着来看看我们的入口函数:
/** * 执行器 * * @param args */ public static void main(String[] args) { String db = "jdbc:mysql:///test"; // 数据源 String username = "root"; // 用户名 String password = "root"; // 密码 String tableName = "ad"; // 表名 String column = "path"; // 列名 String oldValue = "oldImage.com"; // 旧值 String newValue = "newImage.com"; // 新值 SQLUtils sqlUtils = new SQLUtils(db, username, password); sqlUtils.batchExecute(tableName,column,oldValue, newValue); }
通过以上代码可以实现单条数据的修改。
版本演化二猜想
但是,如果数据库中存在大量这样的数据,比如说一个电商网站的商品图片地址,这样一条一条地修改数据恐怕你会疯掉,如果图片服务器再次迁移恐怕你要跑路了。那么我们如何批量修改呢?今天现在写到这里。。。。
阅读全文
0 0
- 通过xml配置来实现数据库的批量修改一
- 通过修改数据库所有者来实现MS SQL Server导入/导出的正常复制
- 通过@ImportResource实现xml配置的装载
- 用xml来配置经常修改的属性
- 【示例】Spring中通过JdbcTemplate来实现数据库的操作
- github的ssh通过http代理来配置实现
- 通过程序修改注册表键值来达到修改IE配置参数的目的
- 如何修改af:table的数据,可以通过修改对应的iterator的数据来实现。
- plsql 通过修改配置文件的方式实现数据库的连接
- 使用XML文件来实现对Servlet的配置
- sql 批量修改,根据不同的条件来修改数据
- 通过java批量修改文件的修改时间
- 用java通过调用C++的DLL文件来修改系统分辨率(一)
- 批量修改数据库表的构架名
- 批量修改sqlserver数据库表的架构
- oracle批量修改数据库的表结构
- 批量修改数据库中字段的数据类型
- 通过php来读取xml的数据
- Objective-C(基础篇)基础知识
- 哈希表-JAVA
- 【阿里云MVP月度分享】如何基于MYSQL做实时计算?
- Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新
- 高级结构设计
- 通过xml配置来实现数据库的批量修改一
- python下使用elasticsearch
- 人月神话笔记-焦油坑、人月神话
- oracle初次接触
- iOS开发之多种Cell高度自适应实现方案的UI流畅度分析
- class 理解意思
- 输出每种兑换方法中,1分的硬币数、2分的硬币数和5分的硬币数
- SQL UNIQUE
- TabbedActivity