PostgreSQL使用MyBatis,insert时返回主键
发布时间:2020-12-13 16:11:35 所属栏目:百科 来源:网络整理
导读:MyBatis中普通的insert语句是这样的: insert id="insert" parameterType="com.xxx.xxx.xxDo" insert into "table_name" (key,value) values (#{key,jdbcType=VARCHAR},#{value,jdbcType=VARCHAR}) /insert 此时Dao接口的public Integer insert(DatabaSEObje
MyBatis中普通的insert语句是这样的: <insert id="insert" parameterType="com.xxx.xxx.xxDo"> insert into "table_name" (key,value) values (#{key,jdbcType=VARCHAR},#{value,jdbcType=VARCHAR}) </insert> 此时Dao接口的public Integer insert(DatabaSEObject do);返回的Integer是收到改动的行数,插入成功时返回1 主键默认是由数据库自己加入的,可以使用selectKey的子查询语句获得 但PostgreSQL为serial字段生成的sequence名字为: 表名_列名_seq,但是这个序列并不能单独访问 所以这个方法需要进行一些修改,这里还是使用最简便的方式: 给insert语句添加useGeneratedKeys="true" keyProperty="id" <insert id="insert" parameterType="com.xxx.xxx.xxDo" useGeneratedKeys="true" keyProperty="id"> insert into "table_name" (key,jdbcType=VARCHAR}) </insert> useGeneratedKeys让MyBatis来分配主键id,keyProperty用于在主键名不是id时指定主键名 此时MyBatis会将分配的主键加入insert的传参do中,通过do自带的getId就可以返回主键了 在server层中使用 public Integer insert(DatabaSEObject xxDo){ if(MyBatisDao.insert(xxDo) > 0){ return xxDo.getId(); } else{ return 0; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |