mybaits/ibaits注意点

1、主键策略

Oracle中,sequence提供多表多字段可共用一个不重复值。MySQL中存在自增列,基本可以满足PK的要求。但自增列存在限制:

a.只能用于表中的一个字段,一张不能同时存在两个以上的自增列;

b.自增列必须被定义为key(PK或FK);

c.自增列不能被多个表共用;

d.当insert语句不包括自增字段或将其值设置为NULL时,该值会自动填上


oracle本身支持sequence:

create sequence PHOTO_LABEL_TYPE_SEQ
minvalue 1
maxvalue 9999999999999999999999999999
start with 801
increment by 1;
定义好sequence后,你就可以用currVal,nextVal取得值。
    CurrVal:返回 sequence的当前值  
    NextVal:增加sequence的值,然后返回 增加后sequence值



<insert id="insert" parameterClass="PhotoLabelType">
        <selectKey keyProperty="photoLabelTypeId" resultClass="java.lang.Long">
            SELECT PHOTO_LABEL_TYPE_SEQ.NEXTVAL FROM DUAL
        </selectKey>
        <![CDATA[
        insert into PHOTO_LABEL_TYPE
        (PHOTO_LABEL_TYPE_ID, PHOTO_LABEL_TYPE_NAME)
        values
        (#photoLabelTypeId#, #photoLabelTypeName#)
         ]]>
 </insert>


public void insert(PhotoLabelType photoLabelType) {
		super.insert("PHOTO_LABEL_TYPE.insert", photoLabelType);
}


此时可以获取到id:

photoLabelTypeDAO.insert(photoLabelType);
PhotoLabel photoLabel = new PhotoLabel();
photoLabel.setPhotoLabelTypeId(photoLabelType.getPhotoLabelTypeId());

而mysql不支持

<insert id="insert" parameterType="" keyProperty="id" useGeneratedKeys="true">
insert int...
</insert>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值