
正文
java代码中的自增序列 java 自增序列号
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java怎么取orcle中的自增序列
很多方法,下面是一种
//公共代码:得到数据库连接
public Connection getConnection() throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:dbname", "username", "password");
return conn;
}
//先用select seq_t1.nextval as id from dual 取到新的sequence值。
//然后将最新的值通过变量传递给插入的语句:insert into t1(id) values(?)
//最后返回开始取到的sequence值。
//这种方法的优点代码简单直观,使用的人也最多,缺点是需要两次sql交互,性能不佳。
public int insertDataReturnKeyByGetNextVal() throws Exception {
Connection conn = getConnection();
String vsql = "select seq_t1.nextval as id from dual";
PreparedStatement pstmt =(PreparedStatement)conn.prepareStatement(vsql);
ResultSet rs=pstmt.executeQuery();
rs.next();
int id=rs.getInt(1);
rs.close();
pstmt.close();
vsql="insert into t1(id) values(?)";
pstmt =(PreparedStatement)conn.prepareStatement(vsql);
pstmt.setInt(1, id);
pstmt.executeUpdate();
System.out.print("id:"+id);
return id;
}
相关问答
Q1: Java 非预制卡文件命名要求后七位为自增序号
i加加表示自动增长。
i加加是以初始值开始,每一次运行都会比原始值加一,同时还有一个加加i,他是以i加1为初始值开始递增,在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法,有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。
Q2: javastream里如何实现自增
java项目实现流水号自动增长
项目中有一个规则编号字段java代码中的自增序列,从1开始,编号长度为5位,那么第一条数据编号就是00001。
实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储java代码中的自增序列;
业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步java代码中的自增序列;
编码前置0,使用String.format("%05d", newNum);格式化获取。
实现代码如下java代码中的自增序列:
private final static AtomicInteger atomic = new AtomicInteger(0);
public static String startFormat(String format) {
return String.format(format, atomic.incrementAndGet());
}
Q3: 在java中用JDBC连接oracle添加ID自增列怎么弄的
oracle数据库里面的自动增张列我以序列的形式来的,首先你要新建一个序列,然后在你要插入数据的地方,调用你新建的这个序列号,nextval是下一列数字,current是当前列的数字
例如 首先创建一个序列:
CREATE sequence idauto (--创建序列)
start with 1 ( --初始值从1开始)
然后执行
然后你在插入数据的时候
insert into usreinfo(id,username) values(idauto.nextval,'aa')
这样就成功了。
idauto.nextval 就是下一列,idauto.current 就是当前列
Q4: JAVA中如何保证线程安全以及主键自增有序
JAVA中如何保证线程安全以及主键自增有序
一、常见场景
多个线程针对一个i进行主键自增。多线程下如果不做安全策略,将会导致各个现成获取的i值重复,导致脏数据
常见策略
1、增加syschroize进行线程同步
2、使用lock、unlock处理
3、使用reetrantent 锁进行锁定
缺点:容易造成性能低下,或者编写代码容易造成死锁
二、新方案
jdk新提供的功能,atomicInteger(还有其java代码中的自增序列他一atomic开头的原子性操作类)
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
原理:通过java的CAS compare and swap,简称cas原语进行操作提升性能,这个也号称乐观锁,不阻塞
观锁实际上并不加锁,当计算遇到冲突或者说前后不一致时会重试 直到成功
CAS有3个操作数 内存值V 要跟内存值做比较的值A 和 新值 B
[html] view plain copy
while(true){
if(V == A){
V = B;
return ;
}else{
A = V;
}
}
CAS的操作对象为volatile类型
volatile类型变量是:CPU直接读写变量所在的内存 而不是把变量copy到寄存器操作
这样对变量的操作所有线程都是可见的
这样做的结果是减少java代码中的自增序列了并发时冲突的概率 但不能完全避免
Q5: 在向数据库插入数据时,如何在java方法中实现id有序自增
@Entity
public class Goods implements Serializable{
@Id
@GeneratedValue
private Integer id;
private Integer gooodsType;//品种
private String goodsName;//产品名称
private String imageMain;//主图
private ListString otherImage;//其java代码中的自增序列他图片
}
该id就是自增java代码中的自增序列的。
还有一种方式java代码中的自增序列,就是要插入java代码中的自增序列的时候java代码中的自增序列,先查一下主键索引序列,然后++,在插入的时候,把id也插入进就可以了。
java代码中的自增序列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 自增序列号、java代码中的自增序列的信息别忘了在本站进行查找喔。





