使用MyBatis往MySQL数据库插入一条记录后如果需要返回该条记录的自增主键值,可以用一下方法。
1,在mapper中指定keyProperty属性,如下所示,指定了keyProperty="id",其中id表示插入StockFee的主键值。xml代码
<insert id="insertStockFee" parameterType="com.***.***.****.***.entity.StockFee" useGeneratedKeys="true" keyProperty="id">
<![CDATA[
INSERT INTO stock_fee(uid,orderNo,amount,share,platformFee,buyCharge,netValue,productCode,payStatus,createTime,lastModTime)
VALUES(#{uid},#{orderNo},#{amount},#{share},#{platformFee},#{buyCharge},#{netValue},#{productCode},#{payStatus},#{createTime},#{lastModTime})
]]>
</insert>
2,StockFee.java
public class StockFee implements Serializable{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -3788366959323844085L;
/**
* 主键id
*/
private int id;
/**
* 用户id
*/
private int uid;
/**
* 订单编号
*/
private String orderNo;
//set and get 方法
}
3,StockFeeDao.java
@Repository("stockFeeDao")
public class StockFeeDao extends BaseDao{
@Autowired
private StockFeeMapper stockFeeMapper;
public int insertStockFee(StockFee stockFee){
stockFeeMapper.insertLicaiStockFee(stockFee);
return stockFee.getId();
}
}
4,测试
@Autowired
private StockFeeService stockFeeService
@Test
public void insertLicaiGuYingBao(){
StockFee stockFee = new StockFee();
stockFee.setUid(2147483640);
stockFee.setOrderNo("p9456745532234005");
stockFee.setAmount(1203);
stockFee.setShare(3000.3423);
stockFee.setPlatformFee(1234320);
stockFee.setBuyCharge(123410);
stockFee.setNetValue(1234.21);
stockFee.setProductCode("1009002343");
stockFee.setPayStatus(0);
stockFee.setCreateTiidme(new Date());
stockFee.setLastModTime(new Date());
System.out.println(MessageFormat.format("output:id={0}",stockFee.getId()));
int id = stockFeeService.insertLicaiStockFee(stockFee);
System.out.println(MessageFormat.format("output:id={0}",id));
}
运行结果:
output:id=0
output:id=65
假如StockFeeDao.java改为:
public int insertStockFee(StockFee stockFee){
return stockFeeMapper.insertLicaiStockFee(stockFee);
}
再运行刚才的单元测试返回的是1,这表示插入成功的sql条数。
分享到:
相关推荐
在 MyBatis 框架中,当我们执行一个插入(insert)...5. 确保数据库的主键 ID 是自增的,这是返回插入 ID 的前提条件。 了解并正确使用这些知识点,可以帮助我们在 MyBatis 中更高效地处理插入数据并获取新记录的 ID。
在MyBatis这个流行的Java持久层框架中,处理自增主键的值通常涉及到插入数据后如何获取新生成的ID。下面将详细阐述MyBatis如何实现这一功能。 1. **自增主键的原理**: 自增主键通常在关系型数据库如MySQL、...
首先,我们需要在MyBatis的Mapper接口中定义一个插入并返回主键ID的方法。这里我们以一个`UserDao`接口为例,定义一个`insertAndGetId`方法: ```java public interface UserDao { public int insertAndGetId(User...
在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条数据的主键id是数据库编程中常见的需求。这一过程可以分为几个关键步骤:数据库连接、执行插入操作、获取主键id以及事务提交。下面详细说明每个步骤...
本文将详细介绍 MyBatis 在 insert 插入操作时返回主键 ID 的配置,包括 MySQL 和 Oracle 两个数据库的用法。 MySQL 用法 在 MySQL 中,MyBatis 提供了一个简单的配置来返回插入的主键 ID。我们可以在 insert 语句...
在上面的代码中,我们将`useGeneratedKeys`属性设置为`true,并将`keyProperty`属性设置为`userId`,以便将插入数据的主键值返回到`UserDomain`实体类的`userId`属性中。 前提条件 需要注意的是,使用`...
这样MySQL会在插入数据时自动分配并设置主键值,但同样不会将这个值返回给插入的对象。 3. **插入后获取自增主键值** 如果需要在插入数据后获取自增的主键值,MyBatis提供了`<selectKey>`元素来实现这一功能。这...
在实现插入数据并返回主键时,可能会遇到这样一个陷阱:在自定义插入方法时,如果错误地返回了SqlSession的自增ID,而不是正确地通过实体类传递,可能会导致看似插入成功但实际上数据未保存到数据库的问题。...
在MyBatis的insert元素中,我们可以设置keyProperty="id"用来指定要返回的主键id,而useGeneratedKeys="true"则用于获取自增长的ID。 在上面的示例中,我们可以看到insert元素中设置了keyProperty="id"和...
`tk.mybatis.mapper.common.IdsMapper`则提供了处理主键ID的基本操作。 在Mapper接口中,你可以像平常一样定义CRUD方法。由于使用了UUID作为主键,插入数据时MyBatis会自动为新记录生成一个UUID。例如: ```java ...
该插件项目可以直接运用于实际开发中,作为分布式数据库表主键ID使用。 一、项目概述 1、项目背景 在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1、自增ID容易被爬虫遍历...
MyBatis 插入返回主键代码实例详解 MyBatis 是一个流行的持久层框架,它提供了多种方式来处理数据库操作。其中,插入数据并返回主键是一个非常常见的操作场景。本文将详细介绍 MyBatis 中插入返回主键代码实例的...
在MyBatis 3.2.6版本中,主要提供了两种方式,这两种方式都适用于MySQL 5.5数据库,因为MySQL支持返回自增主键的特性。下面是这两种方法的详细解释: 方法1:利用`useGeneratedKeys`和`keyProperty`属性 在XML映射...
Mybatis 插入一条或批量插入 返回带有自增长主键记录的实例 Mybatis 是一个基于 Java 的持久层框架,它提供了对数据库的访问和操作的功能。今天,我们将分享一个关于 Mybatis 插入一条或批量插入 返回带有自增长...
`<selectKey>`标签用于获取自增主键的值,通常在MySQL中,当`useGeneratedKeys`设为`true`时,可以获取到自增ID。这里设置为`AFTER`,意味着在插入语句执行后获取新生成的ID。 4. **foreach标签的使用**: `...
-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 --> <select id="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where userName like #{userName} ...
总结来说,MyBatis通过`useGeneratedKeys`和`keyProperty`属性使得我们在插入数据的同时能够方便地获取到数据库自动生成的主键ID,这对于处理一对多、多对多等关联关系的插入操作非常有帮助。只要正确配置并使用这些...
在MyBatis中,主键自动生成是一种常见且实用的功能,尤其在与支持自动增加主键的数据库(如MySQL)配合使用时。当我们在插入数据时,有时希望数据库能够自动为新记录生成唯一的主键值,而不是手动指定。MyBatis提供...
在这个例子中,`keyProperty="id"`意味着将插入操作返回的自增ID值赋给`Order`对象的`id`属性。 接下来,我们看一个具体的MyBatis Mapper文件中的XML映射片段: ```xml <insert id="insert" keyColumn="id" ...