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-03 20:01:18

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

Mybatis中insert中返回主键ID的方法

1.XyzMapper.xml <insertid="doSomething"parameterType="map"useGeneratedKeys="true"keyProperty="yourId"> ... </insert> 或 <insert id="doSomething" parameterType="com.xx.yy.zz.YourClass&quo

MyBatis+MySQL 返回插入的主键ID

需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User"> insert into us

【转载】MyBatis+MySQL 返回插入的主键ID

转载出处:http://chenzhou123520.iteye.com/blog/1849881 需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: xml代码 <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType=

mybatis添加记录时返回主键id

参考:https://www.cnblogs.com/nuccch/p/7687281.html 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个目的.鉴于mybatis目前已经支持xml配置和注解2种方式,所以分别给予详细介绍. 数据表设计: drop table if exists `test`; create table `test` ( `id` bigint(20) NOT NU

Mybatis在insert时返回主键id

需要注意的地方:1.添加记录能够返回主键的关键点在于需要在标签中添加以下三个属性.useGeneratedKeys:必须设置为true,否则无法获取到主键id.keyProperty:设置为POJO对象的主键id属性名称.keyColumn:设置为数据库记录的主键id字段名称2.新添加主键id并不是在执行添加操作时直接返回的,而是在执行添加操作之后将新添加记录的主键id字段设置为POJO对象的主键id属性调用时: roomCheckInfoMapper.insertSelective(roomC

分布式数据库主键id生成策略

分布式数据库部署主要分为两种,一种是读写分离.这个需要弄主从数据库.主要是写的时候写主数据库,读的时候读从数据库.分散读取压力,对于读多写少的系统有利于 提高其性能.还有一种是分布式存储,这种主要是将一张表拆分成多张分表部署到各个服务器中,主要针对写操作频繁的系统,如微博,淘宝的订单系统. 这两种方案都会遇到主键类型及生成方式的问题,还有主从数据库不同步和主键冲突问题. 主键类型主要有GUID和数字类型,这里我们不讨论GUID: 数字主键主要存在唯一性.可同步性两个方面的不足 可同步性:可以不使

数据库主键ID生成策略

前言: 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,下面介绍一些常见的ID生成策略. Sequence ID UUID GUID COMB Snowflake 最开始的自增ID为了实现分库分别的需求,会在自增的前提下,使用不同起点,但需要做数据库拓展时,极其麻烦. 比如刚开始时,我们设计某个系统的数据库时,这个数据库中会有10个表,那么我们对于每个表的内容都需要不同的ID我们就可以使用不同不长自增的形式,比如,第一张表的是1.11.21.31... 第二张表是2.12.22.32..

sql server删除主键约束所想到的

从网上找到了下面一段代码: declare @Pk varchar(100);select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('表名') and xtype='PK';if @Pk is not nullbegin exec('Alter table 表名 Drop '+ @Pk) --删除原主键end 这里的重点是表sysobjects,sysobjects表是系统表,在数据库内创建的每个对象(约束.默认值.日志.规则.存储

SQL Server 主表主键自增量,如何获取主键呢?

开发过程中经常存在主表的主键是自增量的情况,需要获取增量值才能插入字表数据,获取方法如下三种: IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值. @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值. SCOPE_IDENTITY() 返回为当前会话和当前作用域中的某个表生成的最新标识值. 推荐使用IDENT_CURRENT ,不容易因为域和表产生错误值. 参考资料: 1.http://www.cnblogs.com/Gin-23333/p/3