mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取...
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实现数据库的插入操作中实现返回结果的获取...相关推荐
- c++框架有哪些_Java Mybatis框架入门教程_v20200726
MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...
- 第6章 MyBatis框架入门详解(1)
数据持久化 在这章开始之前首先简单介绍一下什么是数据持久化.其实"持久化"是相对"临时"来说的,在计算机中存放数据的地方主要有两个,一个是内存,一个是硬盘,在内 ...
- Mybatis框架入门教程
文章目录 MyBatis是什么?它和hibernate的区别有哪些? MyBatis的工作原理 *MyBatis的核心组件 1.SqlSessionFactory及其常见创建方式 2.SqlSessi ...
- Mybatis基础入门程序
1,1mybatis环境搭建 1,创建工程:使用Intellij IDEA工具,选择工具栏中的"File"-"New"-"Project"选 ...
- mybatis 依赖于jdbc_优于jdbc的mybatis框架入门
1.什么是mybatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyB ...
- MyBatis从入门到精通(一)—MyBatis基础知识和快速入门
Mybatis简介 原始jdbc操作(查询数据) Connection connection = null;PreparedStatement preparedStatement = null;Res ...
- java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...
- 1、MyBatis框架入门学习CRUD
文章目录 框架前言 名词辨析 JavaWeb阶段回顾 框架介绍 ORM框架 MyBatis简介 MyBatis入门案例 1.环境准备 2.新建普通Maven项目,导入依赖 3.MyBatis核心配置文 ...
- 《Java从入门到放弃》框架入门篇:SpringBoot+mybatis使用注解方式实现mapper
上一篇说到springboot+mybatis可以完全注解不用配置文件,本篇主要将mapper.xml文件改为纯注解方式. 原AuthorMapper.xml文件内容如下: <?xml vers ...
最新文章
- 【C++基础】++i和i++
- Latex合并及插入图片相关问题
- 数仓 调度_网易实时数仓实践
- SAP ABAP实用技巧介绍系列之 通过ST03G查询指定transaction的trace data
- 【绝密】泰坦导弹制导计算机内部!
- controller中返回数据
- 手动指定 main 函数作为入口libvcruntimed.lib
- 让海底电缆给数据中心提供更快的直连
- mysql5.7应该导什么包_烘焙知识 | 不同的蛋糕,应该如何完美脱模?
- c语言 程序段 数据段,C程序段(代码段、数据段、BSS段以及堆栈)的详解
- java习题5参考练习及答案_JAVA练习题(第5章).ppt
- 嗖嗖移动大厅JAVA(免费源码分享)
- 扭曲丛林服务器未响应,LOL等级最高玩家已246级 狂刷扭曲丛林攒经验
- 贴吧怎么引流_教您如何快速搭建自己的引流池-万能的小胡
- 论文笔记:PPT: Pre-trained Prompt Tuning for Few-shot Learning
- spring mysql 事务回滚失败_Spring事务回滚失败
- RSSI 平面 三点定位算法(C语言、JS源码例程)
- ubuntu 20.04安装各类软件
- 【深度】谭铁牛院士谈人工智能发展新动态
- 微信小程序 手机号码验证
热门文章
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
- python基础之python中if __name__ == '__main__': 的解析
- placeholder的兼容处理(jQuery下)
- SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例
- 经验之谈——送给年轻的职场人
- dynamic programming for knapsack with repeated items algorithm demonstration
- 贪便宜买了减价香蕉之后
- 和同学沟通,一定是时间效率比较高的
- C++右值引用的参考
- Android 操作系统为什么不启用swap?