1:自增主键返回(主讲)
2:uuid类型主键返回
3:主键返回值序列(oracle的)

4:延伸-自增长主键怎么返回当前id的下一个?
5:总结&下节预报
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第7篇 mybatis入门程序之插入数据库后返回主键
声明:本文系凯哥原创。转载请注明出处
一:自增主键返回(主讲)
1.1:未插入前先查询数据库,当前最大的主键id是多少:
可以看到是28
1.2:先看mapper.xml文件修正
1.3:测试代码:
1.4:查看sql日志:
我们可以看到最新插入数据的id是29.解释已经返回最新插入数据的id
1.5:详细剖析
解释:
selectKey:查询主键,在标签内须要输入查询主键的sql
keyProperty:主键对应的列表(工具属性名)。在本案例中便是id
resultType:返回主键的类型。本案例是自增长型的int类型
order:指定擦还行主键的sql和insert语句的实行顺序,相对付insert语句来说的。
我们是获取插入后的主键id,以是order的值便是after
LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的id.该函数必须合营
inster语句一起利用。否则无效
mapper.xml详细代码:
<!-- 全字段插入数据,带有返回主键的 -->
<insert id=\"大众insertUser\"大众 parameterType=\"大众com.kaigejava.mybatis.pojo.User\公众>
<!-- selectKey:查询主键,在标签内须要输入查询主键的sql -->
<!-- order:指定查询主键的sql和insert语句的实行顺序,相称于insert语句来说 -->
<!-- LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的ID,它必须合营insert语句一起利用 -->
<selectKey keyProperty=\"大众id\公众 resultType=\"大众int\"大众 order=\"大众AFTER\"大众>
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO USER (username,birthday,sex,address)
VALUES(#{username},#{birthday},#{sex},#{address})
</insert>
二:uuid类型主键返回
直接上图
解释:
resultType:uuid是String类型的。以是这里是uuid的
order:除了自增类型的以外,其他的都是before的
UUID():mysql函数的
把稳:
利用uuid作为主键的时候,id必须要显示插入
三:主键返回值序列(oracle的)
解释:
如果是Oracle数据库的时候,UUID作为主键就不能利用UUID()这个函数了。须要利用
seq.nextval from dual 这个语句。
四:延伸-自增长主键怎么返回当前id的下一个?
先看实行结果:
在看mapper.xml文件:
不做过多阐明。
五:总结&下节预报
通过本节学习我们须要节制的:
1:不同类型的主键,怎么返回?
2:自增类型主键id的两种返回办法
入门程序小结
l #{}和${}
#{}表示占位符?,#{}吸收大略类型的参数时,里面的名称可以任意
${}表示拼接符,${}吸收大略类型的参数时,里面的名称必须是value
${}里面的值会原样输出,不加解析(如果该参数值是字符串,有不会添加引号)
${}存在sql注入的风险,但是有些场景下必须利用,比如排序后面会动态传入排序的列名
l parameterType和resultType
parameterType指定输入参数的java类型,parameterType只有一个,也便是说入参只有一个。
resultType指定输出结果的java类型(是单条记录的java类型)
l selectOne和selectList
selectOne查询单个工具
selectList查询凑集工具