JAVA解决主键唯一性冲突(自主封装)

public Long getPKS_Val(String tabId, String tableName) {
  Session session = dao.getSession();
  @SuppressWarnings("unchecked")
  List<Long> pksList = session.createSQLQuery("select t.g_value + 1 from pks_rmdm t where t.g_key='" + tableName + "'").list();
  if (pksList.size() == 0) {
//      String sql = "select max(t."+ tabId +") + 1 from " + tableName + "";
    @SuppressWarnings("unchecked")
    List<Long> maxIdList = session.createSQLQuery("select nvl(max("+ tabId +"), 0) + 1 from " + tableName + "").list();
//      List<Long> maxIdList = session.createSQLQuery("select max('t."+ tabId +"') + 1 from '" + tableName + "'").list();
    String maxId = String.valueOf(maxIdList.get(0));
    int in_value = Integer.parseInt(maxId) + 1;
    session.createSQLQuery("insert into PKS_RMDM(g_key, g_value) values('" + tableName + "', '"+ in_value +"')").executeUpdate();
    return Long.valueOf(maxId);
  } else {
    String pksId = String.valueOf(pksList.get(0));
    int up_value = Integer.parseInt(pksId) + 1;
    session.createSQLQuery("update pks_rmdm t set t.g_value=" + up_value + " where t.g_key='" + tableName + "'").executeUpdate();
    return Long.valueOf(pksId);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百度没有我的爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值