1.mybatis实现数据库的插入操作可以查看https://www.cnblogs.com/wyhluckdog/p/10149895.html这篇博文,这里面的插入操作没有返回结果,所以这篇博文就实现插入的返回。

2. 有两个方式可以获取返回结果:

  (1)主键是自增类型的;

  (2)主键是字符串类型的;

3. 自增主键返回

  通过修改User.xml映射文件,可以将mysql自增主键返回:

<!-- 自增主键返回 --><insert id="insertUser" parameterType="com.huida.po.User"><!-- selectKey将主键返回,需要再返回 --><!-- keyProperty:将返回的主键放入传入参数的id中保存。也就是最后的结果通过id保存起来order:当前函数相对于insert语句的执行顺序,在insert前执行的是before,在insert之后执行的是afterresultType:id的类型--><selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">select LAST_INSERT_ID()</selectKey>insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});</insert>

  keyProperty:将返回的主键放入传入参数的id中保存。也就是最后的结果通过id保存起来

  order:当前函数相对于insert语句的执行顺序,在insert前执行的是before,在insert之后执行的是after。

  resultType:id的类型

  LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。

4.使用uuid实现返回之间(当主键是字符串的时候使用这种方式)

  通过select uuid()得到uuid的值

<insert  id="insertUser" parameterType="cn.huida.mybatis.po.User"><selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">select uuid()</selectKey>insert into user(id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>

  注意这里使用的order是“BEFORE”

5.测试代码(针对的是主键是自增类型的):

@Testpublic void testInsertUser() throws Exception{//通过流将核心配置文件读取进来InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml");//通过核心配置文件输入流来创建工厂SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);//通过工厂创建sessionSqlSession openSession=factory.openSession();//插入一条记录User user=new User();user.setUsername("aaa");user.setBirthday(new Date());user.setSex("1");user.setAddress("qhd");System.out.println("--------------"+user.getId());int id=openSession.insert("test.insertUser", user);//一定要提交事务,做查找的时候可以不用提交事务,但是增删改必须要提交事务。//提交事务 mybatis会自动开启事务,但是它不知道何时提交,需要手动提交事务
        openSession.commit();System.out.println(user);//关闭资源
        openSession.close();//factory没有close(),因为session关闭之后,factory也就关闭了。}

  这里要注意的是insert返回结果存到id中,id通过事务的提交传到user中,从而使user中的id值为数据库插入后的最后的id值。我们要想查看返回的主键值不能直接输出insert返回的id值,而是通过User来查看。

6.单元测试的执行结果:

可以看到我们的id值现在是32。

转载于:https://www.cnblogs.com/wyhluckdog/p/10150222.html

mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取...相关推荐

  1. c++框架有哪些_Java Mybatis框架入门教程_v20200726

    MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...

  2. 第6章 MyBatis框架入门详解(1)

    数据持久化 在这章开始之前首先简单介绍一下什么是数据持久化.其实"持久化"是相对"临时"来说的,在计算机中存放数据的地方主要有两个,一个是内存,一个是硬盘,在内 ...

  3. Mybatis框架入门教程

    文章目录 MyBatis是什么?它和hibernate的区别有哪些? MyBatis的工作原理 *MyBatis的核心组件 1.SqlSessionFactory及其常见创建方式 2.SqlSessi ...

  4. Mybatis基础入门程序

    1,1mybatis环境搭建 1,创建工程:使用Intellij IDEA工具,选择工具栏中的"File"-"New"-"Project"选 ...

  5. mybatis 依赖于jdbc_优于jdbc的mybatis框架入门

    1.什么是mybatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyB ...

  6. MyBatis从入门到精通(一)—MyBatis基础知识和快速入门

    Mybatis简介 原始jdbc操作(查询数据) Connection connection = null;PreparedStatement preparedStatement = null;Res ...

  7. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))

    springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...

  8. 1、MyBatis框架入门学习CRUD

    文章目录 框架前言 名词辨析 JavaWeb阶段回顾 框架介绍 ORM框架 MyBatis简介 MyBatis入门案例 1.环境准备 2.新建普通Maven项目,导入依赖 3.MyBatis核心配置文 ...

  9. 《Java从入门到放弃》框架入门篇:SpringBoot+mybatis使用注解方式实现mapper

    上一篇说到springboot+mybatis可以完全注解不用配置文件,本篇主要将mapper.xml文件改为纯注解方式. 原AuthorMapper.xml文件内容如下: <?xml vers ...

最新文章

  1. 【C++基础】++i和i++
  2. Latex合并及插入图片相关问题
  3. 数仓 调度_网易实时数仓实践
  4. SAP ABAP实用技巧介绍系列之 通过ST03G查询指定transaction的trace data
  5. 【绝密】泰坦导弹制导计算机内部!
  6. controller中返回数据
  7. 手动指定 main 函数作为入口libvcruntimed.lib
  8. 让海底电缆给数据中心提供更快的直连
  9. mysql5.7应该导什么包_烘焙知识 | 不同的蛋糕,应该如何完美脱模?
  10. c语言 程序段 数据段,C程序段(代码段、数据段、BSS段以及堆栈)的详解
  11. java习题5参考练习及答案_JAVA练习题(第5章).ppt
  12. 嗖嗖移动大厅JAVA(免费源码分享)
  13. 扭曲丛林服务器未响应,LOL等级最高玩家已246级 狂刷扭曲丛林攒经验
  14. 贴吧怎么引流_教您如何快速搭建自己的引流池-万能的小胡
  15. 论文笔记:PPT: Pre-trained Prompt Tuning for Few-shot Learning
  16. spring mysql 事务回滚失败_Spring事务回滚失败
  17. RSSI 平面 三点定位算法(C语言、JS源码例程)
  18. ubuntu 20.04安装各类软件
  19. 【深度】谭铁牛院士谈人工智能发展新动态
  20. 微信小程序 手机号码验证

热门文章

  1. 【bzoj2423】最长公共子序列[HAOI2010](dp)
  2. python基础之python中if __name__ == '__main__': 的解析
  3. placeholder的兼容处理(jQuery下)
  4. SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例
  5. 经验之谈——送给年轻的职场人
  6. dynamic programming for knapsack with repeated items algorithm demonstration
  7. 贪便宜买了减价香蕉之后
  8. 和同学沟通,一定是时间效率比较高的
  9. C++右值引用的参考
  10. Android 操作系统为什么不启用swap?