package com.highcom.seqgen.dao.jdbc;
import java.sql.*;
import javax.sql.*;
import org.apache.commons.logging.*;
import org.springframework.beans.factory.*;
import org.springframework.context.*;
import org.springframework.jdbc.core.*;
import org.springframework.jdbc.object.*;
import com.highcom.seqgen.dao.*;
import com.highcom.seqgen.domain.*;
public class SequenceDaoJdbcImpl
implements SequenceDao, InitializingBean {
private DataSource dataSource;
private static Log logger = LogFactory.getLog(SequenceDaoJdbcImpl.class);
//
SequenceQuery sequenceQuery;
SequenceUpdate sequenceUpdate;
SequenceInsert sequenceInsert;
//
protected static final String INSERT_SQL =
"insert into sequence(seq_name,seq_value) values( ? , ? )";
protected static final String UPDATE_SQL =
"update sequence set seq_value = ? where seq_name = ?";
protected static final String SELECT_SQL =
"select seq_name,seq_value from sequence where seq_name =?";
public SequenceDaoJdbcImpl() {
}
public int getSequence(String seq_name) {
int result;
Object obj = sequenceQuery.findObject(new Object[] {seq_name});
if (obj == null) {
sequenceInsert.insert(seq_name, 0);
}
Sequence seq = (Sequence) sequenceQuery.findObject(new Object[] {seq_name});
sequenceUpdate.update(seq.getName(), seq.getValue() + 1);
result = seq.getValue() + 1;
return result;
}
public void afterPropertiesSet() throws Exception {
if (dataSource == null) {
logger.error("Must set dataSource bean property on " + getClass());
throw new ApplicationContextException(
"Must set dataSource bean property on " + getClass());
}
//
sequenceQuery = new SequenceQuery(this.dataSource);
sequenceUpdate = new SequenceUpdate(this.dataSource);
sequenceInsert = new SequenceInsert(this.dataSource);
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
///////////////////////jdbc内部类
class SequenceInsert
extends SqlUpdate {
public SequenceInsert(DataSource dataSource) {
super(dataSource, INSERT_SQL);
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.INTEGER));
compile();
}
public void insert(String seqName, int segValue) {
Object[] objs = new Object[] {
seqName, new Integer(segValue)};
super.update(objs);
}
}
class SequenceUpdate
extends SqlUpdate {
public SequenceUpdate(DataSource dataSource) {
super(dataSource, UPDATE_SQL);
declareParameter(new SqlParameter(Types.INTEGER));
declareParameter(new SqlParameter(Types.VARCHAR));
compile();
}
public void update(String seqName, int segValue) {
Object[] objs = new Object[] {
new Integer(segValue), seqName};
super.update(objs);
}
}
class SequenceQuery
extends MappingSqlQuery {
public SequenceQuery(DataSource dataSource) {
super(dataSource, SELECT_SQL);
declareParameter(new SqlParameter(Types.VARCHAR));
compile();
}
protected Object mapRow(ResultSet resultSet, int _int) throws SQLException {
Sequence seq = new Sequence();
seq.setName(resultSet.getString("seq_name"));
seq.setValue(resultSet.getInt("seq_value"));
return seq;
}
}
}
分享到:
相关推荐
5. **随机序号**:除了连续序号,有些工具可能还支持生成随机但唯一的序号,适用于需要随机标识的场合。 而"序号删除工具"则提供以下功能: 1. **选择性删除**:用户可以指定特定的序号或范围,工具会从序列中移除...
在Oracle Forms中,有时我们需要处理复杂的业务数据,例如处理带有父子结构的数据集时,通常需要在表单中自动生成唯一的序号,以确保每一行记录的独特性和有序性。本文将详细介绍如何在具有Master-Detail结构的...
在数据库管理中,有时我们需要在查询结果中添加一个序列号列,这可以帮助我们更好地组织数据,便于阅读和分析。在Access数据库中,可以利用SQL语言的内置函数来实现这一功能。Access是Microsoft Office套件的一部分...
使用sql语句,在数据库记录加入时,自动生成序号
采用了4中方式实现唯一id生成。 其他语言可以改动。
主要用于在数据库设计时需要自己生成定长的字符串作为关键字。这一个用户字符串每次递增而形成新串的数据库函数方法。
超级方便,点一下就一个序号生成,可以设置字体高度,默认序号是带圆圈的,加载lsp百度一下就知道啦~
在本篇文章中,我们将深入探讨如何在APS.NET项目中利用ASPxGridView控件自动生成序号列,并通过具体的代码示例来实现这一功能。对于熟悉ASP.NET开发的开发者来说,ASPxGridView是一个非常实用且强大的数据展示控件,...
针对硬件绑定 软件序列号生成 , 序列号检测, 相当的好用,都加了注释
综上所述,`规则序号生成`是一个涵盖了编程逻辑、数据处理和可能的第三方工具使用的重要主题。在具体项目中,选择合适的方法和工具生成规则序号能够极大地提高效率,保证数据的准确性和可追踪性。而理解不同生成策略...
本文将深入探讨C#语言中如何开发一个序号自动生成器,并介绍其核心原理和应用价值。 首先,C#是Microsoft公司推出的面向对象的编程语言,它具有丰富的库支持和强大的.NET框架,使得开发此类工具变得高效且灵活。在...
综上所述,"利用Excel SUBTOTAL函数在筛选条件下生成连续序号"是一个高效的解决方案,能够帮助我们在处理复杂数据时保持数据的逻辑性和可读性。掌握这一技巧,无疑会提升我们在日常数据分析和报告制作中的效率。
这个是用SQL server写的存储过程,搭配里面一张数据表使用,达到高并发情况下获得唯一订单号的目的;原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中...
利用 SQL 语句自动生成序号是数据库管理系统中的一种常用技术,本文将介绍两种利用 SQL 语句自动生成序号的方式,并详细解释每种方式的实现原理和应用场景。 第一种方式:使用 row_number() 函数 在 SQL Server ...
本文将详细解析程矢Axure夜话图文教程中关于“中继器表格生成序号”的具体操作方法,并提供一系列实用技巧,帮助读者更好地理解和应用这一功能。 #### 二、基础知识回顾 在深入探讨之前,我们需要了解一些关于...
这是自动生成不重复主键的代码包,直接导包进入程序即可使用,帮助生成由字母数字组成的16位id号,可以用于数据库主键存储(使用数据库自增主键始终有问题,不适合大型程序的使用),该代码包运用于很多大型企业级...
但是,从 office2021 版本开始, Excel 提供了一种简单的方法来实现自动生成序号,使得用户可以更方便地生成序号。 使用 Excel 自动生成序号非常简单,只需要选定要生成序号的列,选择编号方法,然后单击"确定", ...
在style中生成序号,ListBox中的元素的文本标签只需应用style即可。本资源是文章https://blog.csdn.net/u013113678/article/details/120982077的附件资源,包含完整的代码及vs2019项目。
/** * 获得序列号,同时更新持久化存储中的序列 * @param current 当前的日期 * @param start 初始化的序号 * @return 所获得新的序列号 */ protected abstract int getOrUpdateNumber(Date current, int start);
《Axure夜话之中继器系列视频教程》是针对Axure初学者和进阶者的一套教程资源,其中“中继器表格生成连续序号”是该系列中的一个重要章节。Axure是一款强大的交互原型设计工具,它允许设计师快速创建动态、交互式的...