今天使用Mybatis时,把数据库切换成Oracle,以前都是DB2和Mysql。
本来以为改个配置文件就没问题了,
结果发现Oracle中建表的的主键自增不能像DB2和Mysql一样来个Identity自增。
Oracle自增必须得配一个sequence。
造成了配置文件修改。
插入操作
对于自增主键的表,插入可以不配置插入的主键列。否则是必须的。
获取主键
插入语句之前配置:主要是针对Sequence主键而言,插入前必须指定一个主键值给要插入的记录。Oracle、DB2亦如此,方法是在插入语句标签<insert....>之前配置上:
<insert id="AltName.insert" parameterType="AltName">
<selectKey resultType="long" keyProperty="id">
SELECT SEQ_TEST.NEXTVAL FROM DUAL
</selectKey>
insert into
altname(primaryName,alternateName,type)values(#{primaryName},#{alternateName},#{type})
</insert>
插入语句之后配置:蛀牙是针对自增主键的表而言,这类表在插入时不需要主键,而是在插入过程自动获取一个自增的主键。比如MySQL
<insert id="AltName.insert" parameterType="AltName">
<selectKey resultType="long" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
insert into
altname(primaryName,alternateName,type)values(#{primaryName},#{alternateName},#{type})
</insert>
当然,是否需要配置<selectKey>根据情况,只要能保证记录有主键即可。一旦配置了<selectKey>,就可以在执行插入操作时获取到新增记录的主键。
注意:如果没有配置<selectKey>那么保存后的对象的主键依旧为null.
分享到:
相关推荐
本文将详细介绍 MyBatis 中插入返回主键代码实例的实现方法。 在使用 MyBatis 进行数据插入时,需要使用 `selectKey` 元素来获取插入后的主键值。`selectKey` 元素可以在插入语句之前或之后执行,具体的实现方法取...
总的来说,Mybatis通过`useGeneratedKeys`和`keyProperty`属性使得我们能够在插入数据后方便地获取自动生成的主键ID,无论是直接操作Java对象还是使用参数`Map`,都能确保主键值的正确返回。这种方式极大地简化了...
这种情况下,XML 文件中的自定义 `insert` 方法会覆盖 MP 的通用方法,使得 MP 的自动处理主键返回的功能失效。为了解决这个问题,我们需要检查并删除 XML 文件中这个自定义的 `insert` 语句,确保不再执行这个方法...
MyBatis 在 insert 插入操作时返回主键 ID 的配置 MyBatis 是一个流行的持久层框架,它提供了许多强大的功能来简化数据库交互操作。其中,在 insert 插入操作时返回主键 ID 是一个非常重要的功能,特别是在需要将...
Mybatis批量插入数据返回主键的实现 Mybatis是当前最流行的持久层框架之一,它提供了强大的批量插入功能,但是在批量插入数据时如何返回主键是一个常见的问题本文将详细介绍Mybatis批量插入数据返回主键的实现。 ...
在MyBatis的insert元素中,我们可以设置keyProperty="id"用来指定要返回的主键id,而useGeneratedKeys="true"则用于获取自增长的ID。 在上面的示例中,我们可以看到insert元素中设置了keyProperty="id"和...
例如,`insert`、`update`、`delete`和`selectById`等。 7. **扩展通用Mapper**: 如果有特殊需求,可以在通用Mapper接口基础上自定义方法,编写对应的XML文件,实现更复杂的SQL逻辑。同时,tk.mybatis还提供了...
在MyBatis中,当你执行一个插入(insert)操作时,通常默认情况下,MyBatis不会返回新插入记录的主键值,而是返回插入的记录条数。然而,在某些业务场景下,我们可能需要获取到新插入记录的主键,以便进行后续的操作...
首先,我们需要在MyBatis的Mapper接口中定义一个插入并返回主键ID的方法。这里我们以一个`UserDao`接口为例,定义一个`insertAndGetId`方法: ```java public interface UserDao { public int insertAndGetId(User...
在MyBatis中,处理自增主键是一个常见的需求,特别是在Oracle和MySQL这两个数据库中。Oracle通常使用Sequence来生成自增主键,而MySQL则直接通过表定义的自增属性来处理。以下将详细讲解这两种数据库在MyBatis中的...
在MyBatis这个流行的Java持久层框架中,处理自增主键的值通常涉及到插入数据后如何获取新生成的ID。下面将详细阐述MyBatis如何实现这一功能。 1. **自增主键的原理**: 自增主键通常在关系型数据库如MySQL、...
默认情况下,`insert`操作不返回任何值。但可以通过设置`useGeneratedKeys`和`keyProperty`属性获取自增主键的值,例如: ```xml <insert id="insertUser" useGeneratedKeys="true" keyProperty="id"> INSERT ...
在处理插入数据到数据库并返回主键的场景时,MyBatis提供了两种主要的方法。这两种方法都是在映射文件(Mapper.xml)中配置,允许你在插入记录后获取自动生成的主键值。 **方式一:使用`useGeneratedKeys`和`...
在本文中,我们将详细介绍MyBatis插入数据返回主键的实现方法。 Service层实现 在Service层中,我们可以使用MyBatis提供的Mapper接口来实现插入数据的功能。例如,我们可以定义一个`addUser`方法,用于插入用户...
在MyBatis中,主键自动生成是一种常见且实用的功能,尤其在与支持自动增加主键的数据库(如MySQL)配合使用时。当我们在插入数据时,有时希望数据库能够自动为新记录生成唯一的主键值,而不是手动指定。MyBatis提供...
在Mybatis中,`insertOrUpdate`操作是一种将数据插入数据库,如果存在相同的唯一标识则更新已有数据的方法。这种操作在数据库编程中非常实用,因为它允许开发者以简洁的方式处理增删改查(CRUD)操作。在MySQL中,...
MyBatis Generator, How To Generate KeyColumn And KeyProperty Attributes 配置: 生成后Insert: <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="---" useGeneratedKeys="true...
总结来说,Spring Boot整合MyBatis和MySQL实现主键UUID的方法主要包括:配置项目依赖,设置数据库连接信息,自定义MyBatis配置,创建使用UUID主键的实体类,以及编写相应的Mapper接口。这种方法在分布式系统中特别...
Mybatis自定义插件生成...通过拦截器拦截Mybatis的insert语句,通过自定义注解获取到主键,并为该主键赋值雪花ID,插入数据库中。 2、技术架构 项目总体技术选型 SpringBoot2.1.7 + Mybatis + Maven3.5.4 + Mysql + lom