mybatis 针对SQL Server 的 主键id生成策略

 

SQL Server中命令: select newId()  ,可以得到SQL server数据库原生的UUID值,因此我们可以将这条指令写到 Mybatis的主键生成策略配置selectKey中。

如下:

在 mapper.xml 类型映射配置文件中

<insert id="insert" parameterType="com.hqdl.xiaoyi.bean.SpUser">
  	<selectKey keyProperty="id" resultType="String" order="BEFORE">
        select newId()
    </selectKey>
    insert into sp_user_list (id, name, full_name,
      password, category, user_type,
      company_id, depart_id, code,
      locked, wrong_pwd_count, last_login_time,
      lock_reason, create_user_id, create_person_name,
      create_time, deleted)
    values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{fullName,jdbcType=VARCHAR},
      #{password,jdbcType=VARCHAR}, #{category,jdbcType=VARCHAR}, #{userType,jdbcType=VARCHAR},
      #{companyId,jdbcType=VARCHAR}, #{departId,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
      #{locked,jdbcType=CHAR}, #{wrongPwdCount,jdbcType=INTEGER}, #{lastLoginTime,jdbcType=VARCHAR},
      #{lockReason,jdbcType=VARCHAR}, #{createUserId,jdbcType=VARCHAR}, #{createPersonName,jdbcType=VARCHAR},
      #{createTime,jdbcType=VARCHAR}, #{deleted,jdbcType=CHAR})
  </insert>

  得到插入结果

 

时间: 2024-08-02 07:12:19

mybatis 针对SQL Server 的 主键id生成策略的相关文章

关于Jorm的主键ID生成

问题描述 >引言在Jorm中,主键的生成策略主要有AUTO.UUID.GUID.FOREIGN.SEQUENCE.INCREMENT.IDENTITY.ASSIGNED,下面分别来讲述这几种策略的应用场景>GenerationType.AUTOJorm的默认主键策略,自动增长型,自增步长为1,适用数据类型int,long,如:privateintid//默认策略就是AUTO,故可以不写主键策略或@Id(GenerationType.AUTO)//默认策略可以省去不写的哦~privateinti

SQL Server设置主键自增长列(使用sql语句实现)_MsSql

1.新建一数据表,里面有字段id,将id设为为主键 复制代码 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 复制代码 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create

SQL Server设置主键自增长列(使用sql语句实现)

1.新建一数据表,里面有字段id,将id设为为主键 复制代码 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 复制代码 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create

MyBatis中insert操作返回主键的实现方法_java

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="

MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程_Mysql

Email里面收到朋友laopan的求助 laopan:insert into HudsonResult(JobID,EnvironmentID,FirstSessionID,RerunSessionID,State,Desp,OtherInfo) values ((select ID from Hudson where Stream='A7510_R52_Integration' and State='N' and pakName='needCompile' and User='jinhaiz

nhibernate中,新增一条数据,主键id为自增,添加成功后,如何获取此id值

问题描述 nhibernate中,新增一条数据,主键id为自增,添加成功后,如何获取此id值 解决方案 解决方案二:实体.id?解决方案三:哥们,我刚刚接触nhibernate,刚写出来helloworld,这个问题还没研究出来的.而且貌似nh做的项目许多主键都没有自增的.我手头有个项目就是这样的,我也很苦恼.在csdn上研究这个的好像很少.解决方案四:就是类似存储过程insert后,能返回他的自增Id值在nhibernate里可不可以?不想再重新去find解决方案五:帮你顶解决方案六:只知道S

spring问题,事务提交阶段显示主键ID为0,插入数据库失败

问题描述 spring问题,事务提交阶段显示主键ID为0,插入数据库失败 struts2+hibernate4创建了一个注册系统,本来没问题的,但是整合加入spring之后在注册报空指针异常,在事务提交阶段取到的userId为0.感觉就是在new user()那里出问题,但是一直找不到问题根源困扰好久,*.hbm.xml,实体类都没问题,就是事务提交主键ID老是提示为0,怎么解决 实体类文件package com.chengji.ssh.beans; public class User { pr

mysql插入数据时失败但是主键id自动增加了一该如何解决

问题描述 mysql插入数据时失败但是主键id自动增加了一该如何解决 插入时因重复导致插入失败会导致id自增,第二次插入其它数据时会在会变成id加了两次的情况 解决方案 配置一下事务,如果出现异常情况则数据库进行回滚 解决方案二: 重复是指别的字段重复了是吧 解决方案三: 1.在保存前要有数据的正确性校验处理 2.插入数据操作改成存储过程,检查是否有重复 解决方案四: 建议使用事务来进行持久化的处理,这样可能就不会出错了.希望对你有用 解决方案五: 自增是这样的,,如果失败回自动加一,,但数据不

主键自增-数据库如何实现某主键以另一自增主键id为前缀自增

问题描述 数据库如何实现某主键以另一自增主键id为前缀自增 比如说,建立比赛和队伍两个表,想让队伍id在这个队伍参加的比赛的id前实现自增.有什么办法?顺便问一下,数据库操作入门有什么好的推荐吗?只掌握基础的增删改查-T-T希望大家帮我一下,谢谢大家 解决方案 你查询的时候, select (队伍id + 比赛id) as 编号 from 表 解决方案二: 如果这样,没有必要写在数据库中,增加数据冗余,只要查询的时候拼接就可以了. 解决方案三: 关于资料,自己google下有很多,关键是没有说你