解决数据库非主键自增长的方法

原创 2015年11月20日 09:05:04
1:编写获得下一个编号的方法
	//获取编号的next值
	private static String nextId = "";
	public static String getNextId(String curId, String pattern) {

		String curNum = curId.substring(curId.lastIndexOf("_") + 1);
		Integer nextNum = Integer.parseInt(curNum) + 1;
		DecimalFormat df = new DecimalFormat(pattern);
		nextId = curId.substring(0, curId.lastIndexOf("_") + 1)
				+ df.format(nextNum);
		return nextId;
	}:
2:操作数据库
<span style="white-space:pre"><span style="white-space:pre">	</span>//执行保存或更新动作	</span>
<span style="white-space:pre">	</span>public void saveOrUpdate(Product product) {
<span style="white-space:pre">		</span>String sql = "";
<span style="white-space:pre">		</span>try {
<span style="white-space:pre">			</span>DataSource ds = DataSourceUtil.getDataSource();
<span style="white-space:pre">			</span>conn = ds.getConnection();
<span style="white-space:pre">			</span>sql = "SELECT productId FROM `product` ORDER BY productId DESC LIMIT 1";<span style="white-space:pre">			</span>
<span style="white-space:pre">			</span>ps = conn.prepareStatement(sql);
<span style="white-space:pre">			</span>rs = ps.executeQuery();
<span style="white-space:pre">			</span>String newUserId = "";
<span style="white-space:pre">			</span>if(rs.next()){
<span style="white-space:pre">				</span>newUserId = StringUtil.getNextId(rs.getString("productId"),"000");
<span style="white-space:pre">			</span>}else{
<span style="white-space:pre">				</span>newUserId = "product_001";
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>sql="insert into product values(null, ?, ?, ?, ?)";
<span style="white-space:pre">			</span>ps = conn.prepareStatement(sql);
<span style="white-space:pre">			</span>ps.setString(1, newUserId);
<span style="white-space:pre">			</span>ps.setString(2, product.getName());
<span style="white-space:pre">			</span>ps.setString(3, product.getStatus());
<span style="white-space:pre">			</span>ps.setString(4, product.getRemarks());
<span style="white-space:pre">			</span>ps.executeUpdate();
<span style="white-space:pre">		</span>} catch (Exception e) {
<span style="white-space:pre">			</span>e.printStackTrace();
<span style="white-space:pre">		</span>} finally {
<span style="white-space:pre">			</span>try {
<span style="white-space:pre">			</span>ps.close();
<span style="white-space:pre">			</span>conn.close();
<span style="white-space:pre">			</span>} catch (SQLException e) {
<span style="white-space:pre">			</span>e.printStackTrace();
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
版权声明:本文为博主原创文章,未经博主允许不得转载。

ibatis扩展支持主键生成的方法(非数据库方式)

问题:               持久层使用ibatis保存数据进数据库的时候,会用到一些序列(sequence)的数据通常被用于数据表主键唯一标识。Ibatis框架中主要通过selectKey节...

ibatis扩展支持主键生成的方法(非数据库方式)

 问题:               持久层使用ibatis保存数据进数据库的时候,会用到一些序列(sequence)的数据通常被用于数据表主键唯一标识。Ibatis框架中主要通过select...
  • seelye
  • seelye
  • 2014年10月02日 13:47
  • 758

数据库主键的五种设计方法

  • 2009年03月10日 11:33
  • 31KB
  • 下载

oracle主键自动增长方法

  • 2013年04月13日 17:01
  • 12KB
  • 下载

数据库主键生成策略 方法集合

主键生成方法主要有以下几种:   1、采用mysql自增长主键策略      优点 :简单,不需要程序特别处理      缺点:这种方法对以后如果项目移植到其它数据库上改动会比较大,oracl...

oracle数据库表用序列实现主键自增长

点击打开原网址

JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键

使用JdbcTemplate取得插入Oracle记录的主键值 使用JdbcTemplate取得插入Oracle记录的主键值 在使用spring的过程中经常遇到获取插入数据的主键值,在使用jdbc...
  • xwnxwn
  • xwnxwn
  • 2016年05月08日 20:10
  • 1299

sql语句查询数据库中的表名/列名/主键/自动增长值

----查询数据库中用户创建的表 ----jsj01 为数据库名 select name tablename from jsj01..sysobjects where type='U' and n...

powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 .

1 在表视图的列上创建。 双击表视图,打开table properties ———>columens , 双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头)。 打开colum...

JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键

 JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键 最近由于 使用的是Spring下的JdbcTemplate 来操作Oracle数据库,主键使用的是序列,但...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决数据库非主键自增长的方法
举报原因:
原因补充:

(最多只允许输入30个字)