澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

使用mybatis插入自增主键ID的数据后返回自增的I

来源:http://www.bhtsgq.com 作者:计算机知识 人气:61 发布时间:2019-05-15
摘要:1 创制马克斯IdProcess表,由于存款和储蓄ID的最大值 使用mybatis插入自增主键ID的数据后返回自增的ID,添加数据时候获取自增的ID。方法一:SQL语句 create database dbDemogouse dbDemogocreate tabl

1 创制马克斯IdProcess表,由于存款和储蓄ID的最大值

使用mybatis插入自增主键ID的数据后返回自增的ID,添加数据时候获取自增的ID。方法一:SQL语句

create database dbDemo

go

use dbDemo

go

create table tdstudent
{
   id int primary key identity(1,1),
   name varchar(20)
}
go

insert into table values('kuuga');select @@identity

@@IDENTITY返回为当前会话的所有作用域中的任何表最后生成的标识值

在付出中相见用户注册的机能供给接纳用户ID,但是用户ID是数据库自增生成的,这种情状上网查询后采用上边包车型客车法子配置mybatis的insert语句能够减轻:

CREATE TABLE [dbo].[MaxIdProcess](
    [Id] [bigint] IDENTITY(1,1) NOT NULL,    --自增ID
    [TableNM] [nvarchar](200) NOT NULL,    --存储表明
    [Prefix] [nvarchar](50) NULL,    --ID前缀
    [Radix] [char](2) NULL,    --
    [MaxId] [nvarchar](50) NULL,    --存储最大ID
    [CreateDatetime] [datetime] NULL,    --创建时间
    [LastModifyDatetime] [datetime] NULL,
    [LastModifyBy] [nvarchar](50) NULL,
 CONSTRAINT [PK_MaxIdProcess] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO tableName (name) VALUES ('hahah');SELECT@@Identity;

  

1 <insert id="insert" keyProperty="id" useGeneratedKeys="true"
 parameterType="com.demo.domain.User">

2 insert into User_t(name,age,addr) values(#{name},#{age},#{addr})
3 </insert>

2、创立存款和储蓄进度 Pro_GetTableNext马克斯IdByTableName 得到最大ID

方法二:SQL语句

 

 1 CREATE procedure [dbo].[Pro_GetTableNextMaxIdByTableName]  
 2 @TableName char(50),  --table名称
 3 @Prefix char(3),  --ID前缀
 4 @NextId char(16) out    --ID输出
 5 AS
 6 
 7 begin 
 8     --if not exists (select * from MaxIdProcess where TableName=@TableName)
 9     --begin
10     --    insert into MaxIdProcess values(@TableName,null)
11     --end
12     --    update MaxIdProcess 
13     --        set @NextId= isnull(MaxId, @Prefix   '0000000000001'),
14     --                MaxId = dbo.Fun_GetMaxId(MaxId,@Prefix)
15     --    where TableName=@TableName
16 
17 
18     --检查系统表中是否存在该表,如果不存在则调用Pro_GetRandomStr存储过程获取一个随机ID
19    IF EXISTS (SELECT object_id FROM sys.objects(nolock) WHERE type='U' AND name=@TableName)
20    BEGIN
21         EXEC Pro_GetRandomStr @NextId output
22         RETURN 
23    END 
24     
25     --检查MaxIdProcess表中是否存有需要获取ID的表名,如果不存在则插入数据
26    if not exists (select * from MaxIdProcess where TableNM=rtrim(@TableName))
27     begin
28         insert into MaxIdProcess values(@TableName,@Prefix,'10',0,getdate(),getdate(),'Auto')
29     end
30     
31         declare @temp bigint
32         update MaxIdProcess
33         set @temp=cast(rtrim(MaxId) as bigint),MaxId=MaxId 1
34         where rtrim(TableNM)=rtrim(@TableName)
35         set @NextId=@Prefix right(cast(1000000000000000 @temp as nvarchar(16)),13)
36 end
select max(id) from tableName

留意:数据库中该表表的主键ID是自增的。

本文由澳门新葡亰发布于计算机知识,转载请注明出处:使用mybatis插入自增主键ID的数据后返回自增的I

关键词: 数据库 sqlserver XPJ注册 mybatis

最火资讯