DataFieldMaxValueIncrementer 管理主键

本文介绍了如何使用DataFieldMaxValueIncrementer解决并发环境下主键的管理问题,通过将全表主键集中到一个序列列表中进行统一控制。示例中提供了OrderDaoImpl.java的部分代码,完整代码见附件。

package com.sise.spring.dao.impl;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
import org.springframework.jdbc.support.lob.LobCreator;
import org.springframework.jdbc.support.lob.LobHandler;

import com.sise.spring.dao.OrderDao;
import com.sise.spring.entiey.Order;

public class OrderDaoImpl extends JdbcDaoSupport implements OrderDao {

 private LobHandler lobHander;
 //主键值产生器
 private DataFieldMaxValueIncrementer incre;
 public void setLobHander(LobHandler lobHander) {
  this.lobHander = lobHander;
 }
 public void setIncre(DataFieldMaxValueIncrementer incre) {
  this.incre = incre;
 }
 
 public void addOrder(final Order order){
  String sql = "insert into t_order(order_id,user_id,order_con) values(?,?,?)";
  getJdbcTemplate().execute(sql,new AbstractLobCreatingPreparedStatementCallback(this.lobHander) {
   
   @Override
   protected void setValues(PreparedStatement ps, LobCreator lobCreator)
     throws SQLException, DataAccessException {
    ps.setInt(1, incre.nextIntValue());
    ps.setInt(2, order.getUserId());
    lobCreator.setClobAsString(ps, 3, order.getOrderCon());
    
   }
  });
 }
 public List getOrders(int orderId) {
  // TODO Auto-generated method stub
  return null;
 }


}

 这个小小的例子主要的是解决并发的问题,在下面的例子我会做一个全部表的主键放到一个序列表上面来统一管理

 

 

我给出部分代码,全部代码我放在附件里

OrderDaoImpl.java

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值