在数据库中设置主键默认值为sys_guid()
Dao层返回值为void,
注意:Dao层不需要返回值,查询到的主键在serviceimpl层中的pojo(实体类对象)中使用getId直接获取就可以,因为id已经自动添加到对象中了。
Dao层:
public void save(ComUser comUser);
如果需要单独获取主键则可以在serviceimpl层中直接获取
//serviceimpl层
//id:主键
id = comsd.getId(id);
mapper.xml中写法:
注意:在执行insert后会生成一个新的sys_guid()值,也就是主键 ,然后我们在获取主键的时候会执行:select sys_guid() from dual也会新生成一个sys_guid值,也就是每次查询sys_guid会生成新的sys_guid值,所以要设置order为before,查询上次生成的sys_guid()也就是执行insert语句的时候生成的sys_guid()。这样就能保证获取到的主键就是本次插入数据的主键。
mapper层
注意:在执行insert后会生成一个新的sys_guid()值,也就是主键 ,然后我们在获取主键的时候会执行:select sys_guid() from dual也会新生成一个sys_guid值,也就是每次查询sys_guid会生成新的sys_guid值,所以要设置order为before,查询上次生成的sys_guid()也就是执行insert语句的时候生成的sys_guid()。这样就能保证获取到的主键就是本次插入数据的主键。
<insert id="saver" parameterType="com.app.wxservice.dto.ComUser"
>
<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
select sys_guid() from dual
</selectKey>
insert into userinfo.user
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="username != null" >
username,
</if>
<if test="nationality != null" >
nationality,
</if>
<if test="updatetime != null" >
updatetime,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test='id != null '>
#{id},
</if>
<if test='username != null'>
#{username},
</if>
<if test='nationality != null'>
#{nationality},
</if>
</trim>
</insert>