导航:首页 > 编程语言 > java自增主键

java自增主键

发布时间:2023-02-24 09:22:00

java如何在数据库主键按顺序自动生成

<hibernate-mapping>
<class name="com.so.pojo.City" table="CITY" schema="SOP">
<id name="id" type="java.lang.String">
<column name="ID" length="50" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="100" />
</property>
<property name="parent" type="java.lang.String">
<column name="PARENT" length="50" />
</property>
</class>
</hibernate-mapping>
用hibernate:
我的数据库中有一个表示city,主键是id设置<generator class="native"></generator>就可以自动增长,就不用自己管了

② 在java中 主键生成策略(hibernate)都是指的是id的吗

主键生成策略是指 <grnerator class="native"/>

1、 native
对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)

2、assigned
在插入数据的时候主键由用户自己添加,hibernate也不管(很常用)

3、increment
插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法

4、sequence
调用数据库的sequence来生成主键,要设定序列名,不然hibernate无法找到:
<param name="sequence">NAME_SEQ</param>(Oracle中很常用)

5、identity
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)

6、hilo
使用hilo生成策略,要在数据库中建立一张额外的表,默认表名为hibernate_unique_key,默认字段为integer类型,名称是next_hi(比较少用)
我们也可以自己设置自定义的表名和字段名
<id name="id" type="integer">
<column name="id"/>
<generator class="hilo">
<param name="my_unique_key"/>
<param column="next_hi"/>
</generator>
</id>

7、sehilo
通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持 Sequence 的数据库,如 Oracle(比较少用)

8、uuid.hex
hibernate会算出一个128位的唯一值插入

9、uuid.string
hibernate会算出一个16位的值插入

10、foreign
使用外部表的字段作为主键

11、select
使用触发器生成主键(主要用于早期的数据库主键生成机制,少用)

③ oracle主键自增 在java中怎么设置

可以创建一个序列
-- Create sequence
create sequence SEQ_TEXT
minvalue 1
maxvalue 9999
start with 60
increment by 1
cache 20;
在插入数据的时候
INSERT INTO STUDENT(ID,NAME) VALUES(SEQ_TEXT.NEXTVAL,'张三');
这样就可以了!

④ 为什么java 中Derby主键自增每次都加100

据了解,derby数据库对记录项的预缓存项数就是100,
在你数据库操作后没有正常关闭数据库和连接的情况,就会导致缓存中的[前一插入位置]丢失。
这个项可以在derby的设置属性derby.language.sequence.preallocator中改,但缩小后缓存变小影响性能,应该去解决流程中的错误...
另外,作为键值(而不是数值),重点在保障唯一性,正确设计下即使增100也不影响...

⑤ Java程序连接Oracle数据库时怎么设置主键自增

在oracle中主键是不能自增的,不过可以创建一个序列
-- Create sequence
create sequence SEQ_TEXT
minvalue 1
maxvalue 9999
start with 60
increment by 1
cache 20;
在插入数据的时候
INSERT INTO STUDENT(ID,NAME) VALUES(SEQ_TEXT.NEXTVAL,'张三');
这样就可以了

⑥ java中如何获得自增长主键表中新插入行的主键 数据库是sql server 2000.

如果主键值是
自增字段就可以
insert
...
Select
@@identity
insert
into
userInfo
(loginName,loginPass,blance)
values('1','123',23)
Select
@@identity
这样些sql语句就可以了
求满意

⑦ java往数据库sql中添加数据,怎么让主键自增

首先,你如果想把id列设置为自增列,直接在数据库中将其设置为自增列就可以了。

然后,等你添加数据的时候使用如下的语句:

INSERTINTOdingdan(sname,snumber,rname,rnumber,address,beizhu,cdate)VALUES(?,?,?,?,?,?,?)

数据库会自动帮你添加id列的值。 所以,你的这个代码可以改为:

StringinsertCondition="INSERTINTOdingdan(sname,snumber,rname,rnumber,address,beizhu,cdate)VALUES(?,?,?,?,?,?,?)";
sql=con.prepareStatement(insertCondition);
sql.setString(1,handleString(sname));
sql.setString(2,handleString(snumber));
sql.setString(3,handleString(rname));
sql.setString(4,handleString(rnumber));
sql.setString(5,handleString(address));
sql.setString(6,handleString(beizhu));
sql.setTimestamp(7,newTimestamp(System.currentTimeMillis()));//获取系统当前时间
intm=sql.executeUpdate();

⑧ java 用 jdbc 插入一条信息返回当前信息的主键id 怎样写 oracle的数据库 主键序列自增

有两种方法可以设置主键,一种是自增长主键,另一种就是生成唯一序列。
一、自增长主键
--首先建一个表TEST
create table TEST
(
NID int PRIMARY KEY,
test1 varchar2(20),
test2 varchar2(20),
test3 varchar2(20),
test4 varchar2(20),
test5 varchar2(20)
)
-- 再建一个序列SEQ_TEST
create sequence SEQ_TEST
minvalue 1 --最小值
nomaxvalue --不设置最大值
start with 1 --从1开始计数
increment by 1 --每次加1个
nocycle --一直累加,不循环
nocache; --不建缓冲区
以上代码完成了一个序列(sequence)的建立过程,名称为SEQ_TEST,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或Oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!)
你只有了表和序列还不够,最好再建一个触发器来执行它!代码如下:
CREATE OR REPLACE TRIGGER tg_test
BEFORE INSERT ON test FOR EACH ROW WHEN (new.nid is null)
begin
select seq_test.nextval into:new.nid from al;
end;

下面是测试
select * from test
insert into test(nid,test1) values(6,'aaa')
insert into test(test1) values('bbb')

⑨ Java程序连接Oracle数据库时怎么设置主键自增,不涉及框架技术的

从表的键值改掉再更新主表的键值。
例如:CREATE OR REPLACE TRIGGER TRG_触发器名 --创建触发器
BEFORE INSERT OR UPDATE --意思是在插入或更新操作之前
ON 主表名 --为主表创建
REFERENCING OLD AS OLDROW NEW AS NEWROW --定义数据行
FOR EACH ROW
BEGIN
IF INSERTING THEN
--向主表插入时做的操作
ELSE
--更新主表时做的操作
--Update 从表的操作写在这里就可以。
END IF;
END;
如果不是很清楚的话,你可以再上网查一下具体的触发器写法,祝你成功!

阅读全文

与java自增主键相关的资料

热点内容
奔跑程序员 浏览:468
服务器如何搭建类似github 浏览:292
明日之后安卓太卡怎么办 浏览:502
如何使用命令方块找到村庄 浏览:766
泛函压缩映像原理 浏览:521
win10清除文件夹浏览记录 浏览:964
如何查看服务器域中所有服务 浏览:384
学mastercam91编程要多久 浏览:999
如何查服务器地址和端口 浏览:911
教学云平台app怎么下载 浏览:389
单片机510教学视频 浏览:624
陕西信合app怎么查看自己的存款 浏览:663
风冷冰箱有压缩机 浏览:274
android实现wifi连接wifi 浏览:669
飞猪app怎么帮别人值机 浏览:924
笔记本开我的世界服务器地址 浏览:546
怎样隐藏bat命令 浏览:127
android开发创意 浏览:138
京剧猫为什么进不去服务器 浏览:784
怎么自己免费制作一个手机app 浏览:583