MyBatis Insert获取自增主键ID

来源:互联网 发布:mac py终端指的是什么 编辑:程序博客网 时间:2024/04/30 09:05

使用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 * */@Servicepublic class AdminService implements IAdminService {private static final Logger LOGGER = LoggerFactory.getLogger(AdminService.class);@Autowiredprivate 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 ,这样就不会有歧义了。可见我们并不是获取的插入的返回值,而是插入成功后数据被封装到持久化对象中了。


0 0
原创粉丝点击