MyBatis--------生成主键
一、在MySQL数据库中的写法
在mysql数据库中,写法比较简单。在Mybatis配置文件中添加 userGeneratedKeys="true" keyProperty="id",这样就能把我们插入的实体的主键id赋值。下次使用的时候,再调用 对象.getId()就能获取到刚才生成的主键。
注意点:1.实体的id属性需要有setId()方法。
2.数据库中的表主键设置为 auto_increment
实例:
<insert id="insertAccount" parameterType="com.ssi.domains.secutity.entity.Account"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO t_account(nickname,loginName,password,idCard,cellPhone,enabled)
VALUE (#{nickname},#{loginName},#{password},#{idCard},#{cellPhone},#{enabled})
</insert>
在这个例子里面,被插入的Account对象在构造的时候Long id 属性为null。在插入数据库完成后,作为参数的account对象的Long id属性被赋予为数据库中的记录的主键的值。
二、在Oracle数据库中的写法
我们知道,mysql优化里面有一条:为每一张表都设置一个int类型的主键,它能够自增,方便分页和排序。
Oracle数据库中,它不支持主键自增,所以需要我们从序列中取得最新的序列值。
在Mybatis中,可以使用 selectKey标签,在执行SQL语句之前,为实体的ID属性赋值,然后再执行SQL。
<insert id="insert" parameterType="MyAccount">
<selectKey keyProperty="id" resultType="long" order="BEFORE">
select SEQ_EXAMINEE.nextval from dual
</selectKey>
insert into T_Register(id,idCard,cellPhone,password,name)
values(#{id},#{idCard},#{cellPhone},#{password},#{name})
</insert>