MyBatis Insert获取自增主键ID

本文介绍如何在MyBatis中配置并获取插入记录后的自增主键ID,通过XML映射文件设置useGeneratedKeys及keyProperty属性实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Hibernate的时候,insert插入可以很简单的获取自增主键ID。而使用MyBatis有insert select delete等操作,并没有直接获取自增主键的操作,需要手动配置。

1:public interface IAdminDao

	/**
	 * 插入Admin
	 * @param admin
	 * @return
	 */
	public Integer insertAdmin(Admin admin);
	

2:AdminDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dms.dao.IAdminDao">
	
	<insert id="insertAdmin" parameterType="Admin"  useGeneratedKeys="true" keyProperty="id"> 
		insert into admin(email,password) values(#{email},#{password})
	</insert>

</mapper>

重点是在insert中加入 useGeneratedKeys="true" keyProperty="id",前者表示使用自增主键,后者指定主键是id


3:AdminService


/**
 * 
 * @author zhao
 *
 */
@Service
public class AdminService implements IAdminService {
	private static final Logger LOGGER = LoggerFactory.getLogger(AdminService.class);

	@Autowired
	private IAdminDao adminDao;

	public voidregister(Admin admin){
	<span style="white-space:pre">	</span>adminDao.insertAdmin(admin);
		Integer adminId = admin.getId();
	<span style="white-space:pre">	</span>System.out.println(adminId);		
	}

}

注:虽然adminDao.insertAdmin(Admin)的返回值是Integer,但这个返回值并不是自增主键ID,而是插入成功的数据条数,插入一条数据就返回1.

    要想获取自增ID,需要使用Admin , Admin.getId()便可以获取ID了,这个思路类似于Hibernate,对象持久化之后,我们可以通过持久化对象获取主键。

所以上面的IAdminDao的insertAdmin(Admin)方法可以改为void ,这样就不会有歧义了。可见我们并不是获取的插入的返回值,而是插入成功后数据被封装到持久化对象中了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值