MyBatis在insert时返回自增长id值的方法

一、引言

在业务开发的时候,由于MyBatis框架的insert语句默认是不返回记录的主键值,而是返回插入的记录条数的,但是如果业务层需要得到插入数据的主键时候,可以通过配置的方式来实现获取插入数据的ID功能。

java 复制代码
 <!--
      useGeneratedKeys="true" 开启新增主键返回功能
      keyProperty="id" user实体主键属性
      keyColumn="id" user表中主键列
  -->
  <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
     insert into user(username,password) values (#{username},#{password})
  </insert>

下面自己写的案例:

java代码中的Impl层(特别注意:此时DAO层就会将ID的值返回我们传参的实体类中):

java 复制代码
 @Override
    public ChatbotDomain insertChatbot(ChatbotDomain chatbotDomain) {
        chatbotDao.insertChatbot(chatbotDomain);
        // 此时 chatbotDomain.getId() 将会包含自增的 ID
        return chatbotDomain;
    }

DAO层:

java 复制代码
int insertChatbot(ChatbotDomain chatbotDomain);

mybatis中的XML文件:

XML 复制代码
<insert id="insertChatbot" parameterType="cn.jwis.qualitytool.bean.ChatbotDomain" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
    INSERT INTO qcloud_pqm.chatbot_info
    (name, questions, answer, effective, supplementary_answers, create_date)
    VALUES( #{name}, #{questions}, #{answer}, #{effective}, #{supplementaryAnswers}, sysdate())
</insert>

***** java代码中的Impl层和XML尤为重*****

以上亲测有效,有不足请留言更新

相关推荐
luckyext7 分钟前
SQL的RAND用法和指定生成随机数的范围
运维·服务器·数据库·sql·sqlserver·运维开发·mssql
文牧之23 分钟前
Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令
运维·数据库·oracle
数据库幼崽37 分钟前
MySQL 8.0 OCP 1Z0-908 191-200题
数据库·mysql·ocp
萤火夜1 小时前
MYSQL之复合查询
数据库·mysql
JWenzz11 小时前
Redis删除策略
java·数据库·redis·缓存
江畔柳前堤2 小时前
PyQt学习系列07-数据库操作与ORM集成
数据库·学习·算法·机器学习·架构·pyqt
观无2 小时前
腾讯云Mysql实现远程链接
数据库·mysql
SmartSoftHelp开发辅助优化3 小时前
SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
数据库·安全·oracle
朝新_4 小时前
【MySQL】第九弹——索引(下)
数据库·mysql
数据要素X4 小时前
【数据架构03】数据治理架构篇
大数据·数据库·数据仓库·架构