ibatis mysql 自增_mybatis自增主键

简单介绍:在使用mybats插入数据是,有很多需要和id关联的其他数据,所以在插入一条信息时获取其主键信息是很常见的操作。

一 mysql数据库的主键自增(int类型的主键)

1 创建一个表,设置表的id(此id必须是int类型),设置为auto_increment自增类型

2 映射文件配置如下:

insert into user(name,sex,age) values(#{name},#{sex},#{age})

useGeneratedKeys:设置为true表示开启主键自增。

keyProperty:指定数据库主键对应的实体类属性,好将自增的主键赋值给传入的实体类参数。由于数据库设置的id的主键自增,所以这里的插入sql没有对id进行插入,mysql会自动赋值。

3 测试与输出

@Test

public void insertUser(){

User user = new User();

user.setAge(55);

user.setName("zyb");

user.setSex("男");

userDao.insertUser(user);

System.out.println(user);

}

==> Preparing: insert into user(name,sex,age) values(?,?,?)

==> Parameters: zyb(String), hhh(String), 55(Integer)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f099cef]

User(name=zyb, age=55, sex=hhh, id=1)

可以看见的是参数实体类并没有设置id值,但是在执行了插入之后,mybatis自动就将生成的主键值赋值给了实体类的id属性。这种返回数据库生成的id必须要定义 useGeneratedKeys="true" keyProperty="id"两个属性才行,不然不会给实体类参数的id属性赋值为新生成的主键值。

二 自动生成uuid类型的主键

1 数据库定义一个id为varchar类型的表,注意长度最好设置长点,这里设置的是64,因为生成的uuid长度都比较长。

2 映射文件配置如下:

select replace(uuid(),'-','')

insert into student(id,name,sex,age) values(#{id},#{name},#{sex},#{age})

:作用就是封装一条需要执行的sql

resultType:指定执行了标签里面的sql后返回的java类型。

keyProperty:指定将标签里面的sql的执行结果封装给传入实体类的那个属性。

order:值为BEFORE/AFTER 表示标签里面的sql是在插入sql之前还是之后执行,并将结果赋值给实体类的某个属性(通过keyProperty指定)。

需要注意的是,这里必须在sql中传入对id进行插入,并且,由于要在执行了标签里面的sql后,传入的实体类的id才有值,所以标签里面的sql必须在插入sql执行之前执行,即order="BEFORE",如果设置为order="AFTER ",在插入之后执行,虽然任然会对参数实体类的id赋值,但是数据库中却没有插入id值,因为在之后执行,这时插入的实体对象的id还没有赋值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataGridView控件用法二:常用属性

通常会设置的DataGridView的属性如下&#xff1a; AllowUserToAddRows - False指示是否向用户显示用于添加行的选项&#xff0c;列标题下面的一行空行将消失。一般让其消失。AllowUserToDeleteRows - False指示是否允许用户从DataGridView删除行。一般不允许。AllowUserToOrder…

leetcode面试题 16.21. 交换和(二分查找)

给定两个整数数组&#xff0c;请交换一对数值&#xff08;每个数组中取一个数值&#xff09;&#xff0c;使得两个数组所有元素的和相等。 返回一个数组&#xff0c;第一个元素是第一个数组中要交换的元素&#xff0c;第二个元素是第二个数组中要交换的元素。若有多个答案&…

谈谈IP和MAC捆绑的破解之道

来源:[url]http://l-y.vicp.net[/url]我们学校最近将MAC和IP进行了捆绑&#xff0c;又在服务器&#xff08;2K&#xff09;上进行了上网时间的限制&#xff0c;真是烦死人了&#xff0c;我想我可是一个从不受限制的人啊&#xff0c;怎么可以就这样束手就擒呢&#xff01;古话说…

如何在JavaScript中区分深层副本和浅层副本

by Lukas Gisder-Dub卢卡斯吉斯杜比(LukasGisder-Dub) 如何在JavaScript中区分深层副本和浅层副本 (How to differentiate between deep and shallow copies in JavaScript) New is always better!新总是更好&#xff01; You have most certainly dealt with copies in Java…

网站QQ全屏PHP代码,QQ技术导航升级版 超级导航美化版带后台版 PHP源码

QQ技术导航升级版 超级导航美化版带后台版改进F2样式&#xff0c;主针对QQ教程网、卡盟、博客、提供更好收录的位置。改进QQ技术导航背景&#xff0c;增加整体美观效果。去掉死链页面&#xff0c;站长操作使用更加有扩大空间。优化后台登陆界面&#xff0c;去掉织梦后台携带的广…

MySQL基础操作(一)

MySQL操作 一、创建数据库 # utf-8 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;# gbk CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 二、用户管理 创建用户create user 用户名IP地址 identified by 密码; 删…

集合框架05

一、HashSet集合 1 public class Demo01 {2 /*3 * Set接口&#xff0c;特点不重复元素&#xff0c;没索引4 * Set接口的实现类&#xff0c;HashSet(哈希表)5 * 特点&#xff1a;无序集合&#xff0c;存储和取出的顺序不同&#xff0c;没有索引&#xff0c;不…

leetcode1233. 删除子文件夹

你是一位系统管理员&#xff0c;手里有一份文件夹列表 folder&#xff0c;你的任务是要删除该列表中的所有 子文件夹&#xff0c;并以 任意顺序 返回剩下的文件夹。 我们这样定义「子文件夹」&#xff1a; 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下&#xff0c;那…

HIVE-分桶表的详解和创建实例

我们学习一下分桶表&#xff0c;其实分区和分桶这两个概念对于初学者来说是比较难理解的。但对于理解了的人来说&#xff0c;发现又是如此简单。 我们先建立一个分桶表&#xff0c;并尝试直接上传一个数据 create table student4(sno int,sname string,sex string,sage int, sd…

51nod1270(dp)

题目链接&#xff1a;http://www.51nod.com/onlineJudge/questionCode.html#!problemId1270 题意&#xff1a;中文题诶&#xff5e; 思路&#xff1a;dp sabs(a1-a0)abs(a2-a1).... 要使s尽量大&#xff0c;需要让abs(ai-ai-1)尽量大&#xff0c;那么可以让其中一个尽量小&…

Windows IIS 日志分析研究(Log Parser Log Parser Lizard Log Parser Studio) update...

Windows主要有以下三类日志记录系统事件&#xff1a;应用程序日志、系统日志和安全日志。 存放目录&#xff1a;X:\Windows\System32\winevt\Logs\ System.evtx 系统日志 Application.evtx 应用程序日志 Security.evtx 安全日志 审核策略与事件查看器 # 管理工具 → 本地安全…

ios php ide,最好的PHP IDE for Mac? (最好免费!)

这里是PHP的Mac IDE的下降NetBeans自由&#xff01;此外&#xff0c;所有产品的最佳功能。包括内联数据库连接&#xff0c;代码完成&#xff0c;语法检查&#xff0c;颜色编码&#xff0c;分割视图等。下降&#xff1a;这是一个内存猪在Mac上。准备好允许一半的内存&#xff0c…

leetcode79. 24 点游戏

你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *&#xff0c;/&#xff0c;&#xff0c;-&#xff0c;(&#xff0c;) 的运算得到 24。 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: (8-4) * (7-1) 24 代码 class Solution {public boolean judgePoint24(int[] n…

Linux邮件系统整合windows 2008 R2 AD域认证更新

1. 安装只要执行install.sh即可。&#xff08;安装包约40几M&#xff09; 2.文档更新功能 &#xff08;原v1.0文档链接&#xff1a;http://godoha.blog.51cto.com/108180/691376&#xff09; 本文转自 godoha 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/…

004:神秘的数组初始化_使容器神秘化101:面向初学者的深入研究容器技术

004:神秘的数组初始化by Will Wang王Will 介绍 (Introduction) Regardless of whether you are a student in school, a developer at some company, or a software enthusiast, chances are you heard of containers. You may have also heard that containers are lightweig…

php js动态显示系统时间,PHP+JS动态显示当前时间

header("content-type:text/html;charsetgb2312");date_default_timezone_set("PRC");echo var dayNames new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六&…

代码整洁之道,clean code

一、注释 1、不准确的注释比没有注释更令人头疼 尽量用语义化的代码来解释你的意图&#xff0c;而不是依赖注释来解释一段代码 原因很简单&#xff1a;程序员不能坚持维护注释。 代码在后期维护中&#xff0c;不断的优化、变动&#xff0c;很有可能最初的注释已和现有的代码没…

java 获取手机归属地,引起net.UnknownHostException错误

这个问题是请求&#xff0c;重定向了&#xff0c;跟入源码。修改了地址&#xff0c;变成302 Connection connect Jsoup.connect(url);connect.header("Host", "http://info.bet007.com");connect.header("User-Agent", " Mozilla/5.0 (Wi…

leetcode713. 乘积小于K的子数组(双指针)

给定一个正整数数组 nums。 找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于100的子数…

Scrum Guides 2017年最新修改

采用Scrum中增加章节\\最初Scrum是为了管理与开发产品而开发的。从90年代早期开始&#xff0c;Scrum已经在全球范围内得到广泛应用&#xff1a;\\研究及识别可行的市场、技术与产品能力&#xff1b;\\t开发产品及增强功能&#xff1b;\\t每天多次频繁发布产品及增强功能&#x…