在main函数中直接使用spring的JdbcTemplate

场景1: org.springframework.jdbc.core.JdbcTemplate一般在web项目中使用,使用时需要启动web服务。有时调试时,需要简单做些数据库操作,没必要每次启动web服务,这样太烦,直接在main函数中调用简单有效。

场景2: 最近碰到个情况,由于服务异常,在生产库日志表写入了5000万条记录,日志内容相同严重影响查询,在PL/SQL Developer工具手动删除数据,一个sql跑了10个小时,没把数据删除.手动删除时,delete语句执行完毕后需要手动提交,时间长后忘记提交了,等去提交时,连接都断开了.于是写java代码每个小时数据删一次,一次一次删,10几分钟完成。

以下介绍详细情况:

1.简单建表语句<本次使用的Oracle数据库>

create table zbz_log
(
  id      NUMBER(16) not null,
  start_time      DATE,
  end_time        DATE,
  log_content    VARCHAR2(256),
  succ_flag       VARCHAR2(8),
  fail_reason       VARCHAR2(512)
)

2.本文涉及两个类一个是获取JdbcTemplate实例,一个是包含main函数的类

2.1 JdbcTemplate实例化与设置类

package com.zbz.test;

import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.pool.DruidDataSource;

/**
 * 
 * @ClassName: DbOperationUtils
 * @date: 2018-12-25 下午8:21:30
 */
public class DbOperationUtils {

	/**
	 * 数据库连接需要的字符串
	 * */
	public static final String username = "zbzdb";
	public static final String password = "123456";
	public static final String jdbcUrl = "jdbc:oracle:thin:@127.0.0.1:1521/orcl";
	public static final String driverName = "oracle.jdbc.OracleDriver";

	public static JdbcTemplate getJdbcTemplate() {

		// com.alibaba.druid.pool.DruidDataSource
		DruidDataSource dataSource = new DruidDataSource();

		// 设置数据源属性参数
		dataSource.setPassword(password);
		dataSource.setUrl(jdbcUrl);
		dataSource.setUsername(username);
		dataSource.setDriverClassName(driverName);

		// 获取spring的JdbcTemplate
		JdbcTemplate jdbcTemplate = new JdbcTemplate();
		// 设置数据源
		jdbcTemplate.setDataSource(dataSource);

		return jdbcTemplate;
	}

}

2.2 main函数中使用JdbcTemplate实例与sql操作

package com.zbz.test;

import java.util.ArrayList;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 *  
 * @ClassName: TestDbOperation
 * @date: 2018-12-25 下午8:30:26
 */
public class TestDbOperation {
	
	public static void main(String[] args) {
		
		System.out.println("测试开始.....");
		JdbcTemplate jtdb = DbOperationUtils.getJdbcTemplate();
		List<String> delLogs = new ArrayList<String>();
		
		for(int hour=0;hour <18; hour ++){
			String time1 = String.valueOf(hour);
			String time2 = String.valueOf(hour+1);
			String delLog = getSql(time1,time2);
			delLogs.add(delLog);
		}
		System.out.println("输出开始....");
		for(int i=0;i<delLogs.size();i++){
			String sql= delLogs.get(i);
			System.out.println(sql);
			jtdb.update(sql);
		}
		System.out.println("输出结束....");
		System.out.println("测试结束.....");
	}
	
	/**
	 * 组装sql
	 * */
	public static String getSql(String hour1,String hour2){
		
		String delLog = "DELETE from zbz_log\n" +
	            "   WHERE LOG_CONTENT = '监控服务平台'\n" +
	            "   AND FAIL_REASON = '程序抛出异常!'\n" +
	            "   AND START_TIME >= TO_DATE('20181221"+ " " + hour1 + ":00:00', 'yyyymmdd hh24:mi:ss')\n" +
	            "   AND START_TIME <= TO_DATE('20181221"+ " " + hour2 + ":00:00', 'yyyymmdd hh24:mi:ss')";
		
		return delLog;
	}
	
}

3.组装后的sql

DELETE from zbz_log
   WHERE LOG_CONTENT = '监控服务平台'
   AND FAIL_REASON = '程序抛出异常!'
   AND START_TIME >= TO_DATE('20181221 16:00:00', 'yyyymmdd hh24:mi:ss')
   AND START_TIME <= TO_DATE('20181221 17:00:00', 'yyyymmdd hh24:mi:ss')

以上,TKS.

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringJdbcTemplateSpring框架对JDBC进行封装的一个工具类,旨在使JDBC更加易于使用JdbcTemplate处理了资源的建立和释放,帮助我们避免一些常见的错误,比如忘记关闭连接。使用JdbcTemplate可以简化数据库操作的代码量,并提供了一些便捷的方法来执行数据库查询、更新等操作。 使用JdbcTemplate的步骤如下: 1. 引入相关的jar包,包括druid-1.1.9.jar、spring-jdbc-5.2.6.RELEASE.jar、spring-orm-5.2.6.RELEASE.jar和spring-tx-5.2.6.RELEASE.jar。这些jar包提供了JdbcTemplate的实现和相关依赖。 2. 在Spring的配置文件添加数据库连接的配置,包括数据库的URL、用户名、密码和驱动类名等信息。这可以通过配置一个DataSource对象来实现。 3. 配置JdbcTemplate对象,将DataSource对象注入到JdbcTemplate。可以通过在Spring的配置文件定义一个JdbcTemplate的bean,并设置其dataSource属性为前面配置的DataSource对象。 4. 创建service和dao对象,将JdbcTemplate对象注入到dao。在dao层的代码,可以通过在dao类定义一个JdbcTemplate的成员变量,并在dao类的构造方法或通过依赖注入的方式将JdbcTemplate对象注入进来。这样,就可以在dao使用JdbcTemplate来执行数据库操作了。 通过上述步骤,我们就可以在Spring项目使用JdbcTemplate来进行数据库操作了。JdbcTemplate提供了一系列的方法,如查询、更新、批处理等,可以根据具体的需求选择合适的方法使用使用JdbcTemplate可以简化数据库操作的代码,并提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringjdbcTemplate使用](https://blog.csdn.net/ABestRookie/article/details/127232689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [JdbcTemplate基本使用](https://download.csdn.net/download/weixin_38606076/14939780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringJdbcTemplate使用](https://blog.csdn.net/qq_38628046/article/details/108111318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值