日期:2014-05-16  浏览次数:20462 次

hibernate ibatis mybatis 操作oracle数据库主键自增长

oracle数据库没有自增长功能 ?需要自己建一个序列(phb_keys)。具体怎么建就不说了。

?

hibernate 情况:

?

<hibernate-mapping>

?<class name="com.talkweb.model.Blog" table="blog">

? ?<id name="id" type="java.lang.String">

? ? <column name="id"></column>

? ? <generator class="sequence">

? ? ?<param name="sequence">phb_keys</param>

? ? </generator>

? ?</id>

? <property name="title" type="java.lang.String">

? ?<column name="title" length="20"></column>

? </property>

? <property name="content" type="java.lang.String">

? ?<column name="content" length="200"></column>

? </property>

?</class>

</hibernate-mapping>

?

?

?

ibatis 情况:

?

<insert id="insertBlog" parameterClass="blog"> ?

? ? ?<selectKey type="pre" keyProperty="id" resultClass="java.lang.String">

? ? ? ? ? ?select phb_keys.nextval as id from dual

? ? ?</selectKey>?

? ? ? ? <![CDATA[ INSERT INTO BLOG ( id, title, content) VALUES ( #id#,#title#, #content# ) ]]> ? ??

? ? </insert> ?

?

这种情况我的报错了 ?我就改成单独加一个序列查询的语句 ?每次先查询一次该语句得到主键

?

? ?<select id="getSerquence" resultClass="java.lang.String">

? ? ? ? select phb_keys.nextval as id from dual

? ? </select>

?

?

?

mybatis 情况:

?

<insert id="insertBlog" parameterType="Blog">

? ? ?<selectKey keyProperty="id" resultType="String" order="BEFORE">

? ?select phb_keys.nextval from dual

? </selectKey>

? ? ?insert into BLOG(id,title,content) values(#{id},#{title},#{content})

? ? </insert>?