定时执行业务逻辑+更新数据库表中的时间

知识点:学会使用时间类及时间类的时间格式间的转换。

需求:1.在线程中每天的某个时间定时的执行业务逻辑

            2.更新数据库表中的时间【取数据库中的时间然后更新到表中去】


1)定时执行业务逻辑

在线程中要求每天凌晨一点或者几点执行某项业务:
// 检查执行创建下年度表名

	int hour = this.getTiming(Calendar.HOUR_OF_DAY);
	if (hour == 1) { // 每天凌晨1点的时候执行
		
		//业务逻辑代码
	}



	/**
	 * 获取当前时间点 年度、月份、日、时、分
	 * 
	 * @return
	 */
	private static int getTiming(int timeFlag) {  
		//添加年度  当前年度
		Calendar now = Calendar.getInstance();
		return now.get(timeFlag);
	}


时间的转换类:【非常重要】

public class GetSystemDate {

	/**
	 * 获取系统当前时间(年月日)
	 * @return
	 */
	public static String getDate(){
		Date date = new Date();
		SimpleDateFormat  format = new SimpleDateFormat("yyyyMMdd");
		return format.format(date);
	}
	
	/**
	 * 获取系统当前时间(年-月-日)
	 * @return
	 */
	public static String getDateForTen(){
		Date date = new Date();
		SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd");
		return format.format(date);
	}
	
	/**
	 * 获取系统当前时间(年月日时分秒)
	 * @return
	 */
	public static String getTime(){
		Date date = new Date();
		SimpleDateFormat  format = new SimpleDateFormat("yyyyMMddHHmmss");
		return format.format(date);
	}
	
	/**
	 * 获取系统当前时间(年-月-日  时:分:秒)
	 * @return
	 */
	public static String getDateTime(){
		Date date = new Date();
		SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(date);
	}
	
	/**
	 * 获取当前时间点 年度、月份、日、时、分
	 * 
	 * @return
	 */
	public static int getTiming(int timeFlag) { //Calendar.YEAR
		//添加年度  当前年度
		Calendar now = Calendar.getInstance();
		return now.get(timeFlag);
	}
	
	/**
	 * 时间格式转换(年月日时分秒)
	 * @return
	 */
	public static String getFormatTime(Timestamp timestamp){
		SimpleDateFormat  format = new SimpleDateFormat("yyyyMMddHHmmss");
		return format.format(timestamp);
	}
	
}


2)更新数据库表中的时间:取数据库时间的语句【select sysdate ti from dual】

		Timestamp timeStamp = this.baseDao.getCurrentDateTime();
		String timeStr = GetSystemDate.getFormatTime(timeStamp);
		this.baseDao.execute(UPDATE_TIME, new Object[]{timeStr});



下面是相关类和方法:

getCurrentDateTime()

	/**
	 * 取得系统(数据库服务)时间
	 * @return
	 */
	public Timestamp getCurrentDateTime(){
		
		return DbFeatureFactory.GetFeature().getSysTime();
		
	}
数据库适配的类:DbFeatureFactory

public class DbFeatureFactory {
	
	private static DbFeature dbFeature = null;
	private static String productName = null;
	
	public static DbFeature GetFeature() {
		if (dbFeature == null) {
			if (productName == null)
				productName = PropertiesHander.getEVConfValue(
						BIZConstant.DATABASE_SERVICE).toLowerCase();

			if (productName.indexOf("postgre") > -1) {
				dbFeature = new PostgreDbFeature();
			} else if (productName.indexOf("oracle") > -1) {
				dbFeature = new OracleDbFeature();
			} else if (productName.indexOf("db2") > -1) {
				dbFeature = new DB2DbFeature();
			} else if (productName.indexOf("mssql") > -1) {
				dbFeature = new MSSQLDbFeature();
			} else if (productName.indexOf("mysql") > -1) {
				dbFeature = new MSSQLDbFeature();
			} else if (productName.indexOf("sybase") > -1) {
				dbFeature = new SybaseDbFeature();
			} else {
				// 默认为ORACLE
				dbFeature = new OracleDbFeature();
			}
		}
		return dbFeature;
	}
	
}


getSysTime()方法

	@Override
	public Timestamp getSysTime() {
		
		String sql="select sysdate ti from dual";
		
		return (Timestamp)this.getJdbcTemplate().queryForObject( sql, Timestamp.class );
	}
         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值