范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MyBatisinsert标签

  MyBatis insert 标签用来定义插入语句,执行插入操作。当 MyBatis 执行完一条插入语句后,就会返回其影响数据库的行数。
  下面通过一个示例演示 insert 标签的具体用法。
  1. 修改 WebsiteMapper.xml,增加插入语句,代码如下。      insert into website(name)     values(#{name}) 12345复制代码类型:[java]
  2. 在 WebsiteMapper 接口中定义一个 add() 方法,代码如下。public int addWebsite(String name);1复制代码类型:[java]
  参数为 Sting 类型的字符串;返回值为 int 类型,即执行 SQL 后,插入记录的行数。
  3. 测试代码如下。//插入 name 为开课吧4 的记录 String name = "开课吧4"; int i = websiteMapper.addWebsite(name); System.out.println("共插入了 " + i + " 条记录");1234复制代码类型:[java]
  4. 执行测试代码,控制台输出如下。共插入了 1 条记录1复制代码类型:[java]  insert 标签常用属性
  insert 标签中常用的属性如下表。
  属性名称
  描述
  备注
  id
  它和 Mapper 的命名空间组合起来使用,是唯一标识符,供 MyBatis 调用
  如果命名空间+ id 不唯一,那么 MyBatis 抛出异常
  parameterType
  传入 SQL 语句的参数类型的全限定名或别名,它是一个可选属性。
  支持基本数据类型和 JavaBean、Map 等复杂数据类型
  keyProperty
  该属性的作用是将插入操作的返回值赋给 PO 类的某个属性,通常为主键对应的属性。如果是联合主键,可以将多个值用逗号隔开。
  -
  useGeneratedKe
  该属性用来设置,是否使用 JDBC 提供的 getGenereatedKeys() 方法,获取数据库内部产生的主键并赋值到 keyProperty 属性设置的请求对象的属性中,例如 MySQL、SQL Server 等自动递增的字段,其默认值为 false。
  该属性值设置为 true 后,会将数据库生成的主键回填到请求对象中,以供其他业务使用。
  flushCache
  该属性用于设置执行该操作后,是否会清空二级缓存和本地缓存,默认值为 true。
  -
  timeout
  该属性用于设置执行该操作的最大时限,如果超时,就抛异常。
  -
  databaseId
  取值范围 oracle、mysql 等,表示数据库厂家;元素内部可通过  来为特定数据库指定不同的 sql 语句。
  MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。
  keyColumn
  该属性用于设置第几列是主键,当主键列不是表中的第 1 列时,就需要设置该属性。如果是联合主键,可以将多个值用逗号隔开。
  -
  注意:insert 标签中没有 resultType 属性,只有查询操作才需要对返回结果类型进行相应的指定。  传递多个参数
  在上面的示例中,我们在插入语句中只使用了一个 String 类型的参数,而在实际的开发过程中,我们的插入语句往往需要使用多个参数,Mybatis 为我们提供以下 3 种方式,来实现给映射器传递多个参数:
  使用 Map 传递参数
  使用注解传递参数
  使用 JavaBean 传递参数
  使用 Map 传递参数
  我们可以将参数封装到一个 Map 对象中,然后传递给 MyBatis 的映射器,示例如下。
  1. 在 WebsiteMapper 接口中,定义一个 addWebsiteByMap() 方法,并使用 Map 传递参数,方法如下。int addWebsiteByMap(Map params);1复制代码类型:[java]
  2. 在 WebsiteMapper.xml 中,使用 insert 标签定义一条插入语句,并接收通过 Map 传递的参数,配置如下。      insert into Website (name, url) values (#{name}, #{url}) 1234复制代码类型:[java]
  3. 测试代码如下。Map params = new HashMap<>(); params.put("name", "开课吧"); params.put("url", "https://topic.kaikeba.com/"); int i = websiteMapper.addWebsiteByMap(params); System.out.println("通过 Map 成功向数据库中添加了 " + i + " 条记录");12345复制代码类型:[html]
  4. 执行测试代码,控制台输出如下。通过 Map 成功向数据库中添加了 1 条记录1复制代码类型:[java]  使用注解传递参数
  我们还可以使用 MyBatis 提供的 @Param 注解给注解器传递参数,示例代码如下。
  1. 在 WebsiteMapper 接口中,定义一个 addWebsiteByParam() 方法,并使用 @Param 注解传递参数,方法如下int addWebsiteByParam(@Param("name") String name, @Param("url") String url);1复制代码类型:[java]
  2. 在 WebsiteMapper.xml 中使用 insert 标签定义一条插入语句,并接收通过 @Param 注解传递的参数,配置如下。      insert into Website (name, url)  values (#{name}, #{url}) 1234复制代码类型:[java]
  3. 测试代码如下。int i = websiteMapper.addWebsiteByParam("kaikeba", "topic.kaikeba.com/"); System.out.println("通过 @Param 注解成功向数据库中添加了 " + i + " 条记录");12复制代码类型:[html]
  4. 执行测试代码,控制台输出如下。通过 @Param 注解成功向数据库中添加了 1 条记录1复制代码类型:[java]  使用 JavaBean 传递参数
  在参数过多的情况下,我们可以将参数通过 setter 方法封装到 JavaBean(实体类)对象中 ,传递给映射器。
  1. 在 WebsiteMapper 接口中,定义一个 addWebsiteByJavaBean() 方法,并使用 JavaBean 传递参数,方法如下。int addWebsiteByJavaBean(Website website);1复制代码类型:[java]
  2. 在 WebsiteMapper.xml 中使用 insert 标签定义一条插入语句,并接收通过 JavaBean 传递的参数,配置如下。      insert into Website (name, url) values (#{name}, #{url}) //1234复制代码类型:[java]
  3. 测试代码如下。//创建 JavaBean 对象 Website website = new Website(); //通过 setter 方法将参数封装 website.setName("kaikeba JavaBean"); website.setUrl("topic.kaikeba.com"); int i = websiteMapper.addWebsiteByJavaBean(website); System.out.println("通过 JavaBean 成功向数据库中添加了 " + i + " 条记录");1234567复制代码类型:[java]
  4. 执行测试代码,控制台输出如下。通过 JavaBean 成功向数据库中添加了 1 条记录1复制代码类型:[java]  区别
  以上 3 种方式的区别如下:
  使用 Map 传递参数会导致业务可读性的丧失,继而导致后续扩展和维护的困难,所以在实际应用中我们应该果断废弃该方式。
  使用 @Param 注解传递参数会受到参数个数的影响。当 n≤5 时,它是最佳的传参方式,因为它更加直观;当 n>5 时,多个参数将给调用带来困难。
  当参数个数大于 5 个时,建议使用 JavaBean 方式。  主键(自动递增)回填
  我们知道,MySQL、SQL Server 等数据库表可以采用自动递增的字段作为其主键,当向这样的数据库表插入数据时,即使不指定自增主键的值,数据库也会根据自增规则自动生成主键并插入到表中。
  一些特殊情况下,我们可能需要将这个刚刚生成的主键回填到请求对象(原本不包含主键信息的请求对象)中,供其他业务使用。此时,我们就可以通过在 insert 标签中添加 keyProperty 和 useGeneratedKeys 属性,来实现该功能。
  下面我们通过一个示例,来演示主键(自动递增)回填功能。
  1. 为 WebsiteMapper.xml 中 id 为 addWebsite 的 insert 标签添加 keyProperty 和 useGeneratedKeys 属性,具体代码如下:      insert into Website (name,url) values(#{name},#{url}) 1234复制代码类型:[java]
  2. 测试代码如下:// 添加一个网站信息 Website addsite = new Website(); //插入的对象中不包含主键 id  addsite.setName("kaikeba "); addsite.setUrl("https://topic.kaikeba.com/"); //执行插入 int num = websiteMapper.addWebsite(addsite); System.out.println("添加了 " + num + " 条记录"); //获取回填的主键 System.out.println("添加记录的主键是:" + addsite.getId());12345678910复制代码类型:[java]
  3. 执行测试代码,控制台输出如下。添加了 1 条记录 添加记录的主键是:312复制代码类型:[java]  自定义主键
  如果在实际项目中,若数据库不支持主键自动递增(例如 Oracle),或者取消了主键自动递增的规则,我们可以使用 MyBatis 的 标签自定义生成主键,具体配置代码如下。                    select if(max(id) is null,1,max(id)+1) as newId from Website          insert into Website (id,name,url) values(#{id},#{name},#{url}) 12345678复制代码类型:[java]
  标签中属性说明如下:
  keyProperty:用于指定主键值对应的 PO 类的属性。
  order:该属性取值可以为 BEFORE 或 AFTER。BEFORE 表示先执行 标签内的语句,再执行插入语句;AFTER 表示先执行插入语句再执行 标签内的语句。
  开课吧广场-人才学习交流平台

曝iphone14pro将配备4800万像素摄像头内置8GB内存根据分析师JeffPu的最新爆料,苹果公司计划在2022年9月发布四款iPhone14,包括6。1英寸的iPhone146。7英寸的iPhone14Max6。1英寸的iPhone1vivos12pro系列官宣搭载天玑1200将于22日发布vivo今天宣布,将于12月22日19点30举行vivoS12全面出色新品发布会,并且该机已开启预约。目前官方还未公布新机的任何配置外观等信息,不过12月10日,联发科官方发文表示联想事件大结局,杨柳结局如何?已经发酵了一个月联想事件即将进入尾声,也很快要看到胜利的曙光。第一是,环球时报总编辑胡锡进,刚开始力挺联想,被网友们炮轰以后,现在也开始猛烈炮轰联想,要求联想给国有资产流失以及高管印度公布100亿美元计划以吸引半导体和显示器企业,鸿海Vedanta等有意设厂路透社12月15日报道,印度科技部长周三表示,联邦内阁已批准一项约100亿美元的激励计划,旨在吸引半导体制造商和显示器生产企业。印度正在加大努力,推动实现政府打造全球电子生产中心的我国快递件突破1000亿件的背后,我们得到和失去的是什么?开车听到这样的消息我国2021年快递件突破1000亿件。电商快递数量激增乍一听这消息,不禁让人澎湃,我们的电商发展水平如此之高!这一概念在脑海一闪而过,随即就出现一个问题电商如此快虎牙直播被诉侵权险下架?小米线下黄牛统计方法专利获授权专利小米线下黄牛统计方法专利获授权北京小米移动软件有限公司获得统计线下黄牛的方法装置及存储介质专利授权,申请日期为2018年1月。摘要显示,该方法包括获取电子设备的初次开机时所处区这才是正确查询iPhone电池健康的方法,手把手教你学会,简单实用分享最实在的玩机技巧,洞察最前沿的科技资讯!大家好,这里是手机科技园!一般来说,iPhone电池的寿命是500次充电循环,电池容量就会降到80以下,那么你知道,你的手机充了多少次电大厂抑郁患者我什么都好,只是不开心作者程怡编辑秦安娜微信公众号略大参考(IDhyzibenlun)腾讯天美工作室的企业微信,群组内的李逍遥头像将永久的暗下去,它的使用者毛星云,于上周六从腾讯科兴大厦跃下,为年仅30近8000枚比特币被当垃圾扔掉,英小伙痛苦了8年,如今妻离子散南方12月16日讯据英国媒体当地时间12月15日报道,英国威尔士纽波特市一小伙8年前意外弄丢存放近8000枚比特币(现价值3。4亿英镑)的硬盘,如今他妻离子散,但仍坚持在垃圾堆里寻智能社会已经悄悄的来到,我们的智能手机,大家知道它的作用吗?假设阿里为了击败腾讯,帮人民建设一个全民所有制的新社交平台,人民会自然从微信来到这个新平台,这个新平台每天可以产生上亿的广告费,人民用这个利润再投资,可以创生人民的新零售平台,这个比苹果电脑还贵的国产电脑,销量不高,为啥被评为十大国之重器?纯国产电脑你觉得卖多少钱合适?在我们国家有这样一个电脑品牌,它的销量不高,配置同样也不高,但价格却不便宜,在某东的价格是8000多,比苹果最新推出的,性能炸裂的M1芯片电脑还要贵几
B站说唱,说不好9月5日,B站自制综艺说唱新世代节目组发出一则节目延播声明,称因天气原因导致设备出现故障,节目无法按时输出成片。然而,这一看似合理的理由却很快遭到了网友质疑,并怀疑是节目组的营销手自爆财务造假5个月过去了,瑞幸为什么还没倒?如果不是几天前连咖啡的回归推文再一次勾起了人们对这个创立于2014年的咖啡品牌的无限追忆,大多数人可能连想都不会想到这个曾经和星巴克瑞幸一起掰手腕的公司也一度开了400多家线下咖啡小米今日发布高端笔记本电脑,售价近万元,性能起飞今天早上,小米正式官方预热的首款万元笔记本电脑小米笔记本的高端旗舰产品小米笔记本ProX15正式发布。规格,小米笔记本ProX15主要卖点似乎是屏幕和机身,采用15。6英寸34566款热门的抗衰老面霜测评!双十一必备排雷国庆一过,冬天与双十一也快要来了,又到了一年一度囤面霜的时候。说到面霜,也分很多类型,刚好最近有很多小可爱咨询有哪些抗衰老面霜推荐。所以阿宝去搜刮一些自己使用过,以及各网友使用后评娇韵诗双萃的最佳搭配竟然这么多?你都用过哪些?前阵子,阿宝整理了一篇王炸护肤CP天呐!护肤品竟有这么多王炸CP,这7组我先磕为敬!。没想到很多小姐妹疯狂安利娇韵诗双萃精华说是护肤神器,于是阿宝也毫不犹豫买了!最近做了一大堆护肤曝光!香港消委会抽查60款饼干,多款查出致癌物继澳洲进口牛奶润肤乳后,饼干也出事了!!据悉,近日,香港消委会最新调查发现,60款预先包装饼干样本中,全部检出在加工过程中产生的污染物,包括基因致癌物环氧丙醇或丙烯酰胺,当中逾7成海南免税5店年终盛典全攻略!一年仅此一次!不用等双十一姐妹们,第三届中免海南离岛免税年终盛典来啦!!这次的年终盛典又是超多福利,双十一若是蹲不到自己想要的护肤品,那就去海南剁手吧!!问题来了,每家店都有哪些优惠?快来跟阿宝一起解锁活动四百年都不打扫的厕所,为何一点也不感觉脏,它到底有何奇特之处四百年未清理的厕所,竟然一点也不脏布达拉宫这个海拔最高的宫殿,也被称作与天堂距离最近的地方,而它的厕所四百年都从未打扫,有人认为这个地方可能没有上厕所的地儿,或者这个地方不允许上厕试驾瑞虎7PLUS配置丰富不但提速快,而且低速行驶更出色!作为继瑞虎8PLUS和艾瑞泽5PLUS之后备受消费者关注的单品,瑞虎7PLUS在2021成都车展正式亮相。瑞虎7PLUS定位为年轻派智趣SUV。新车拥有新的型格活力设计同级超强的鲲6种漆色3种内饰配色东风本田全新思域9月底上市,搭载1。5T引擎日前,车图腾从东风本田官方获取了全新一代思域的新车官图。据悉,新车将推出6款车型6种外观漆色,以及3种内饰配色。此外,新车有望9月24日正式上市。新车整体造型更加扁平化,发动机盖向突出越野性能,提供选装配置坦克300新车曝光,搭载2。0T动力日前,车图腾从相关渠道获得了一组坦克300新车的申报图。据悉,新车的越野元素更为突出,同时提供了丰富的选装配置,以满足不同消费者的需求。与普通车型相比,新车采用亚光黑色涂装,配有全