【MyBatis】——自增主键与非自增主键返回

             mysql自增主键,执行insert提交之前自动生成一个自增主键。当时一直没有想为什么要返回主键,也就是返回就返回了吧,总是有用的,确实,返回来有可能会作为下一次查询的依据,或者下一个插入的外键的凭证,总之,先返回来再说……

             实现思想是酱紫的:通过mysql函数获取到刚插入记录的自增主键:LAST_INSERT_ID(),但是是在insert之后调用此函数。

 

             mybatis中,只有添加用户会涉及到返回主键,这里会有两种主键,一种是int型在数据库设置为自增,一种是uuid的形式。


	 	
	 	
	 		SELECT LAST_INSERT_ID()	
	 	
	 	 	
	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address});
 

             自增主键方式执行过程是首先将记录插入数据库,前提是数据库已经设置了id是自动递增的,之后通过mysql函数得到刚insert进去记录的主键。


             而另外一种方式uuid的形式是与自增逐渐的执行过程是相反的,它的执行过程是:首先通过uuid()得到主键,然后将主键设置到user对象的id属性中,之后在insert执行时,再从user对象中取出id属性值。

 
	 	 
	 	 
	 		SELECT uuid()	
	 	
	 	
	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address});


             这种方式就是所谓的非自增主键返回,需要修改表中id的字段类型为string

 

             二者除了执行过程相反之外,还有一点不同就是:自增主键中的insert sql语句主键自动生成,在insert语句中不需要写id字段,在非自增主键时,insert语句需要写id字段。


             mysql中是这样实现的,那么在oracle中使用不同的函数和order标识,如下:

 
	
			SELECT 序列名.nextval()
	
	insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})
 



你可能感兴趣的:(-------【SSH】)