oracle的主键与mybatis插入操作的矛盾

今天写一个简单的提交操作时,一直一直一直通过不了,首先是蠢蠢的把url搞错了,后来就是遇到了经常遇到的数据库字段不匹配的问题。
仔细检查了数据库的表字段,把不能为空的相应字段加上allowBlank=”false”属性(公司封装框架)。
再后来,就遇到了mybatis的插入操作,主键要自动生成,而不是自己填写。
哒哒哒~~敲重点。
情况一:oracle数据库,主键是序列的情况下
在mybatis中配置

<sql id="epcc_sequence">epcc253_seq(表中序列名字啦)sql>
//插入操作时
<insert id="insert" parameterType="Epcc253PO">
    INSERT INTO epcc_253 id,name,age values(
    <include refid="epcc253_sequence" /> ,#{name},#{age})
insert>

情况二,敲黑板…
oracle数据库,

 id  VARCHAR2(32) default SYS_GUID() not null,

sys_guid()呢,会保证在每个数据库中生成的id是唯一的。
这时,并行操作和远程环境中的时候,就不会发生冲突。
对象在不同机器上的不同数据库里生成并需要合并在一起的时候,它就贼有用啦~~
然后,就节省了对数据库进行访问的时间戳和机器标识符的查询的时间。

~~~不足的话,恩,还没有遇到,不是很理解。
什么需要手动输入或通过脚本填充,或者将他们当做web参数来传递。
在mybatis中配置的话就是

`
sys_guid()
//插入语句

INSERT INTO epcc_253 id,name,age values(
,#{name},#{age})


就酱紫啦~~~`

你可能感兴趣的:(oracle的主键与mybatis插入操作的矛盾)