1.为什么要使用selectKey

数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键

2.具体实现demo

查询数据库最简单的几步

2.1 controller

@Controller
public class SelectKeyController {@AutowiredSelectKeyServiceImpl selectKeyService;public Integer String(){Goods goods = new Goods();goods.setAmount("100");goods.setGname("红烧肉");goods.setMid("666666");goods.setPrice("25");int insert = selectKeyService.insert(goods);System.out.println("执行成功条数: " + insert);System.out.println(goods.getId());return goods.getId();}}

2.2 service

@Service
public class SelectKeyServiceImpl implements SelectKeyService {@AutowiredSelectKeyMapper selectKeyMapper;@Overridepublic int insert(Goods goods) {int insert = selectKeyMapper.insert(goods);return insert;}
}

2.3 mapper

public interface SelectKeyMapper {int insert(Goods goods);}

2.4 实体类(根据自己数据库表来写)

@Data
public class Goods {//自增主键private Integer id;private String mid;private String gname;private String price;private String amount;private String imageName;}

3.mapper.xml 文件

<mapper namespace="com.example.wjtweb.mapper.SelectKeyMapper"><insert id="insert" parameterType="com.example.wjtweb.pojo.Goods"><selectKey keyProperty="id" order="AFTER" resultType="Integer">SELECT LAST_INSERT_ID()</selectKey>INSERT INTO Goods (MID,GNAME,PRICE,AMOUNT,imageName)VALUES (#{mid},#{gname},#{price},#{amount},#{imageName});</insert></mapper>

selectKey 会将 SELECT LASTINSERTID()的结果放入到传入的model的主键里面,keyProperty 对应的model中的主键的属性名,这里是 Goods 中的id,因为它跟数据库的主键对应order AFTER 表示 SELECT LASTINSERTID() 在insert执行之后执行,多用与自增主键,BEFORE表示SELECT LASTINSERTID() 在insert执行之前执行,这样的话就拿不到主键了,这种适合那种主键不是自增的类型resultType 主键类型

4.输出结果

查询数据库

selectKey标签详解相关推荐

  1. selectKey标签详解(*)

    1.为什么要使用selectKey 数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点儿耗时耗力,我们可以采用selectK ...

  2. HTML marquee标签详解

    HTML marquee标签详解 在论坛默认的编辑状态下,我们可以通过UBB语法的move和fly语句让对象动起来,但功能很简单,只是平行地移动.而我们使用HTML的Marquee语句则可以产生更多的 ...

  3. 前端基础-HTML的的标签详解

    阅读目录 一.head内常用标签 二. HTML语义化 三. 字符实体 四. h系列标签 五. p标签 六. img标签 七. a标签 八. 列表标签 九. table标签 十. form标签 一. ...

  4. W3C中meta标签详解

    2019独角兽企业重金招聘Python工程师标准>>> meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <meta ...

  5. HTML基本标签详解与运行截图

    Web前端基础修炼 HTML基本标签详解与运行截图 CSS基本操作详解及截图演示 JavaScript基础(ECMAScript) JavaScript中DOM操作 JavaScript中BOM操作 ...

  6. JSF标签详解(全)

    转自:https://wenku.baidu.com/view/82b84b255901020207409c87.html :https://blog.csdn.net/qq_36411874/art ...

  7. SEO技巧:Meta标签详解

    网页设计:Meta标签详解 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广 个人网站,人们首先想到的方法无外乎以下几种: ●在搜索引擎中 ...

  8. java foreach标签_Java中Velocity foreach循环标签详解

    Java中Velocity foreach循环标签详解 Java Velocity中foreach循环可以很容易的遍历数组或者集合. 定义 #foreach( $elem in $allElems) ...

  9. Div与Span标签详解

    Div与Span标签详解 一.DIV 1.简介 2.作用 3.案例 二.span 1.简介 2.语法 3.案例 一.DIV 1.简介 在html中布局使用最多标签为div, 我们通常将网页重构说成di ...

最新文章

  1. UA STAT687 线性模型理论I 线性模型概述
  2. Javascript 变量、函数的声明
  3. 301转向和网址规范化
  4. [ARC074C] RGB Sequence(dp)
  5. java权限框架_Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架
  6. matlab 数值解 期权顶级啊,潮盈期权院高胜率交易技巧系列之二----期权交易策略及基于MATLAB统计套利介绍...
  7. jquery水平垂直居中_Java Web应用程序集成的jQuery UI选项卡(水平和垂直)示例
  8. Linux下杀僵尸进程办法
  9. cad统计面积长度插件vlx_cad计算总长度插件
  10. Java教程:Java分割字符串(spilt())
  11. kali 安装 netspeed 扩展
  12. Complementary Trilateral Decoder for Fast and Accurate Salient Object Detection(速读啊)内含与u-shape的对比
  13. 存储历史(从古老的绳子记忆到如今)
  14. 中国国内可用API合集
  15. Linux-CentOS 安装配置ExifTool
  16. iOS Technical Support For All-AFastRecord
  17. 宇宙最强vscode教程
  18. TodoList反选
  19. 辽宁省内计算机专业本科大学排名,辽宁省本科院校排名
  20. 【智能优化算法-遗传算法】基于遗传算法求解单目标优化问题(实数编码)附matlab代码

热门文章

  1. activity task
  2. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01
  3. 使用阿里云的ip地址查询服务-使用免费版
  4. 超级搞笑的创意婚纱照(献给将要结婚的朋友们)
  5. 软技能:代码之外的生存指南读书笔记
  6. Linux与Windows下Shebang的执行
  7. 不同类型面膜特点及功效
  8. Target runtime jdk is not defined 项目上红叉报错解决方法
  9. python基础之函数嵌套定义
  10. uboot移植新手入门实践