小乔 发表于 2016-11-21 09:33:32

PostgreSQL主键生成 MyBatis记录插入

Postgresql 创建主键并设置自动递增的三种方法
  http://francs3.blog.163.com/blog/static/40576727201111715035318/
  参考上面的文章,创建了主键自动递增的表,但是不知道如何在pgAdmin里面进行创建,真弱,哎。
  这个里面的表创建了以后,都会生成的一个Sequence。
  在MyBatis里面如果要往主键自动递增的表里面插入数据,如果不进行SelectKey的设置的话,会发生Null冲突。
  配置文件如下



<insert id="insert" parameterType="test.modelAgain.UserAgain" >
      <selectKey keyProperty="id" resultType="int" order="BEFORE">
      SELECT nextval('test_a_id_seq'::regclass) as id
    </selectKey>
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    insert into test_a (id, name)
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR})
</insert>
  我一开始也是在网上看到类似的代码,就奇怪
  nextval('test_a_id_seq'::regclass)
  这个是从哪里来的,
  后来在pgAdmin里面找到了,是在相应的表的字段,会出现
  ALTER TABLE test_a ADD COLUMN id integer;
ALTER TABLE test_a ALTER COLUMN id SET NOT NULL;
ALTER TABLE test_a ALTER COLUMN id SET DEFAULT nextval('test_a_id_seq'::regclass);
  使用最后的那个就好了。
  这样就可以随心所欲的插入数据了。
  Java代码里面,sqlSession.commit();操作是不可少的,要不然看不到结果。
页: [1]
查看完整版本: PostgreSQL主键生成 MyBatis记录插入