<insert id="insert" parameterMap="pm_user_without_id">
<![CDATA[
INSERT INTO t_user
(username,password,emplName,visible)
VALUES (?,?,?,?)
]]>
<selectKey resultClass="int">
<![CDATA[
SELECT @@IDENTITY AS ID
]]>
</selectKey>
</insert>
想取的主键的值,需要加 selectKey这段,而且前面sql语句里面不需要插入主键字段。对于不同的数据库,selectKey语句的写法是不同的。
针对不同数据库的写法如下:
Cloudscape VALUES IDENTITY_VAL_LOCAL()
DB2 VALUES IDENTITY_VAL_LOCAL()
Derby VALUES IDENTITY_VAL_LOCAL()
HSQLDB CALL IDENTITY()
MySql SELECT LAST_INSERT_ID()
SqlServer SELECT SCOPE_IDENTITY()
SYBASE SELECT @@IDENTITY
ORACLE SELECT CUSTOM_SQL.NEXTVAL AS ID FROM DUAL
而且id =(Integer )getSqlMapClientTemplate().insert("addUser", user);
做insert操作返回的是key是一个object对象,需要做类型转换。
分享到:
相关推荐
在MybatisPlus中,插入数据并获取对象的主键值是一个常见的需求,特别是在需要跟踪新插入记录的唯一标识时。MybatisPlus提供了一种简便的方式来实现这一功能。本篇文章将详细解释如何在MybatisPlus中实现这一操作,...
Ibatis通过`useGeneratedKeys`和`keyProperty`属性,配合SQL的`SELECT SEQ_NAME.NEXTVAL FROM DUAL`,可以在插入后自动获取生成的主键值。 3. **Identity(自动增长)**:对于支持自动增长主键的数据库,如MySQL,...
- **Insert**: 插入数据,支持自动获取自增主键值。 - **Update**: 更新数据,可以根据条件更新特定记录。 - **Delete**: 删除数据,根据指定条件删除匹配的记录。 **iBatis SQL Maps入门教程** 入门教程通常从...
对于支持自动生成主键的数据库,Ibatis 提供了 `<selectKey>` 元素来获取新生成的主键值。在插入语句中,`<selectKey>` 通常置于 `<insert>` 元素内,用于在插入数据后获取数据库生成的主键。例如,对于Oracle,...
对于序列主键(如Oracle、DB2中的Sequence),需要在插入语句之前配置`<selectKey>`标签来获取主键值。例如: ```xml SELECT SEQ_TEST.NEXTVAL FROM DUAL insert into .... .... ``` 对于MySQL等支持...
2. 删除(Delete):Mapper XML文件中定义DELETE语句,Action中使用SqlSession的delete方法,通常需要传入一个主键值来确定删除哪条记录。 3. 修改(Update):编写UPDATE语句,Action调用SqlSession的update方法,...
在 Oracle 和 DB2 中,需要在插入语句之前配置 selectKey 来获取主键值。例如:<insert id="insertAccount" parameterClass="Account"> <selectKey resultClass="long" keyProperty="sctId"> SELECT SEQ_TEST....
ID列表在实际应用中通常用于获取一系列记录的主键值,以便后续进行更复杂的操作或查询。 ### 三、查询Id列表的核心SQL语句 #### SQL语句详解 ```sql resultClass="java.lang.Integer"> <![CDATA[ SELECT GROUP...
- **<selectKey>`**:用于生成主键,在某些数据库中可能需要在插入记录前先获取自增主键值。 - **<insert>`**:定义插入操作,可以与`parameterMap`结合使用以支持复杂的参数传递。 - **<resultClass>`**:定义查询...
- **先获取主键**:`<selectKey>`可以在插入语句之前配置,如Oracle的Sequence,需要在插入前确定主键值。 - **后获取主键**:对于自动增长的主键,如MySQL,`<selectKey>`可以在插入语句之后配置,利用`LAST_...
对应于`selectOrdersByUserId`,你需要编写一个SQL查询,它将根据父对象的主键值(这里是`user_id`)来获取子对象。 ```xml SELECT * FROM orders WHERE user_id = #{userId} ``` **多对多关系映射** 多对多...
这是最基础的方式,开发者在插入数据前预先生成主键值,然后将这个值传递给Ibatis。这种方式适用于已知主键生成规则或者有独立主键生成服务的情况。 2. **序列(Sequence)**: 在Oracle等支持序列的数据库中,...
对于MySQL这样的自增主键数据库,则可以在插入语句之后通过`LAST_INSERT_ID()`来获取新生成的主键值: ```xml SELECT LAST_INSERT_ID() insert into ... ``` #### 五、SQL参数传递 iBatis提供了多种方式...
- 执行插入操作:使用C#的Mapper.Instance().Insert方法,并传入SQL语句ID和要插入的对象,如果插入操作影响了有主键的表,则可以获取新插入数据的主键值。 - SQL描述文档:在XML文件中,可以详细定义SQL语句的结构...
当需要返回数据库自动生成的主键值时,可以使用标签来获取,这在SQL Server中常用于获取插入数据后由数据库生成的主键。 当需要获取多行数据时,iBATIS可以返回一个对象集合,每个对象对应于数据表中的一行数据。...
这里的`#memberId#`, `#start#`, `#end#`等都是从传入的`HashMap`对象中获取的键值对。 ### 四、更新操作(部分展示) 最后一条SQL语句展示了一部分更新操作的示例: ```xml update Question set ``` 这条...
在Ibatis中,可以在插入语句后直接获取生成的主键值。 3. **雪花算法(Snowflake)**:这是一种分布式ID生成算法,适合大数据环境下的分布式系统。它将ID分为多个部分,如时间戳、工作节点ID等,保证全局唯一。在...
在这里,`RETURNING id INTO #{id}`是Oracle数据库特有的语法,用于获取自动生成的主键值。 2. 更新操作 ```xml UPDATE student SET name = #{name}, age = #{age}, address = #{address} WHERE id = #{id...
此外,`<selectKey>`标签用于在插入后获取自增主键的值,这对于某些数据库系统(如MySQL)是必要的。 总的来说,iBatis的批处理功能通过在代码和配置文件中灵活运用循环,使得开发者能够有效地处理大批量数据操作,...
- **1.2.3 数据库**:特定类型的数据库(如BerkeleyDB)由于不支持SQL查询,只提供键值对存储,因此可以作为高性能缓存使用。 **1.3 命中率** 命中率指请求缓存次数与缓存返回正确结果次数的比例。命中率越高,...