Mybatis-主键回填

需求:

添加检查组,检查组包含多个检查项目,检查组与检查项连张表是多对多得关系,用一种中间表为维系

检查组表:

检查项表:

中间表:

mapper映射文件:

 <!--新增--><insert id="add" parameterType="com.itheima.pojo.CheckGroup"><selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">SELECT LAST_INSERT_ID()</selectKey>insert into t_checkgroup(code,name,sex,helpCode,remark,attention)values(#{code},#{name},#{sex},#{helpCode},#{remark},#{attention})</insert>
  • selectKey元素的keyProperty属性指定了采用哪个属性作为POJO的主键。
  • resultType告诉MyBatis将返回一个Integer型的结果集。
  • order属性设置为BEFORE说明将于当前定义的SQL前执行。说明它会在插入之前先执行生成主键的SQL,然后插入数据。如果有一些特殊需要,可以把它设置为AFTER,比如一些插入语句的内部可能有嵌入索引调用,这样它就会在插入语句之后执行了。

mapper接口

package com.itheima.dao;import com.github.pagehelper.Page;
import com.itheima.pojo.CheckGroup;import java.util.Map;/*** 持久层接口*/
public interface CheckGroupDao {public void add(CheckGroup checkGroup);
}

服务实现类:

package com.itheima.service.impl;import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.dao.CheckGroupDao;
import com.itheima.entity.PageResult;
import com.itheima.pojo.CheckGroup;
import com.itheima.service.CheckGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;import java.util.HashMap;
import java.util.Map;/*** @Description: TODO* @author: scott* @date: 2021年06月03日 22:43*/@Service(interfaceClass = CheckGroupService.class)
@Transactional
public class CheckGroupServiceImpl implements CheckGroupService {@Autowiredprivate CheckGroupDao checkGroupDao;public void add(CheckGroup checkGroup, Integer[] checkitemIds) {//设置检查组checkGroupDao.add(checkGroup);//设置检查组合和检查项的关联关系Integer groupId = checkGroup.getId();//当执行了checkGroupDao.add(checkGroup);就可以获取到idSystem.out.println(groupId);Map<String, Integer> map = new HashMap<String, Integer>();for (Integer checkitemId : checkitemIds) {map.put("checkGroupId",groupId);map.put("checkItemId",checkitemId);checkGroupDao.setCheckGroupAndCheckItem(map);}}
}

Mybatis-主键回填相关推荐

  1. MyBatis主键回填和自定义主键

    MyBatis主键回填和自定义主键 1. 主键回填 JDBC中的Statement对象在执行插入的SQL后,可以通过getGeneratedKeys方法获得数据库生成的主键,这样便能达到获取主键的功能 ...

  2. MyBatis主键回填

    方式一 <insert id="insertBook" useGeneratedKeys="true" keyProperty="id" ...

  3. Mybatis—— 主键回填

    在 MySQL 中主键自增字段,在插入后往往需要获得这个主键,以便于后面的操作,而 MyBatis 提供了实现的方法. 首先可以使用 keyProperty 属性指定哪个是主键字段,同时使用 useG ...

  4. Mybatis 主键回显 KeyGenerator原理

    这篇文章研究下 Mybatis 配置主键回显相关功能. 本篇文章将以以下几个问题切入: Mybatis 如何 配置主键自增回显? JDBC 主键回显用法? 对于不支持自增主键数据库,Mybatis 有 ...

  5. mybatis主键生成策略和mp主键生成策略

    mybatis主键生成策略和mp主键生成策略 1,mybatis plus 主键生成策略 都是通过给实体类的属性添加注解的方式执行type = IDTYPE- ​ 1,AUTO数据库ID自增 ​ 2, ...

  6. mybatis 主键自增 insert后返回主键

    mybatis 主键自增 insert后返回主键 : <insert id="insertStudentAutoKey" parameterType="Studen ...

  7. 轻量级封装DbUtilsMybatis之四MyBatis主键

    MyBatis主键 不支持对象列表存储时对自增id字段的赋值(至少包括3.2.6和3.3.0版本),如果id不是采用底层DB自增主键赋值,不必考虑此问题 温馨提示:分布式DB环境下,DB主键一般会采用 ...

  8. Mybatis中selectKey 标签的作用,主键回填,找了好多文章没一个解释清楚。。

    (1)没有配置selectKey 标签时候插入数据: <insert id="addUser" parameterType="model.User"> ...

  9. @MyBatis主键返回

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能. 比如在表的关联关系中,将数据插入主 ...

  10. mysql mybatis 主键id_MyBatis+MySQL 返回插入的主键ID-Go语言中文社区

    需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: insert into user(user ...

最新文章

  1. 【转载】YOLOV详解
  2. ICPC2008哈尔滨-A-Array Without Local Maximums
  3. oracle schema
  4. 使用GNS3简单模拟帧中继环境
  5. spark streaming kafka Couldn't find leader
  6. 手机之家签名工具_这个签名工具可以让任何人“证明自己是中本聪”
  7. vlan trunk中继链路(讲解+配置)
  8. color 的一些处理
  9. C++ 手动实现简单的智能指针类
  10. 中国大陆物联网驶入快车道 台商抢上车
  11. python编译成c代码_python如何调用c编译好可执行程序
  12. 孙鑫VC学习笔记:第三讲 MFC应用程序框架
  13. iOS测试技巧:GPX文件修改经纬度
  14. 用php打竖的文字_总结PHP竖排文字的方法
  15. Win7开机加速全攻略一:序章和开机原理
  16. 最伟大的IT人物10强
  17. Acwing算法基础课学习笔记
  18. excel操作系列之中文姓名转英文姓名
  19. 一款技术人必备的接口测试神器:Apifox
  20. 美国大学生数学建模竞赛选题、经验以及准备材料

热门文章

  1. 收集大家的想法,谢谢参与。。
  2. 如何有效的杜绝“羊毛党“的薅羊毛行为?
  3. display:none和visibility:hidden的区别
  4. Linux更改文件权限(一)
  5. 离散傅里叶变换 (DFT)、快速傅里叶变换 (FFT)
  6. 什么是jQuery,jQuery的特点。
  7. Android 地图导航调用百度地图、高德地图、腾讯地图,ffmpeg音视频开发实战5
  8. html中h3字体不加粗取消,css如何取消加粗
  9. 7-8 打死我也不说
  10. 有没有好的学计算机英语的软件,什么软件学英语最好免费