Hibernate获取insert后的Id值

Hibernate3.3.2版本中getSession().connection()已被弃用,替代方法SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection()

        /**
	 * 此方法可以用在增、删、改,并返回第一个列值
	 * 如:insertSqlReturnValue(sql,new Object[]{...})
	 * @param sql
	 * @param objects 参数集合
	 * @param returnNames	返回属性值名称
	 * @return
	 */
	public Object insertSqlReturnId(String sql,final Object[] objects){
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Object returnObj = null;
		try {
			conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection(                );
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			ps = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (null != objects && objects.length > 0) {
			for (int i = 0; i < objects.length; i++) {
				Object param = objects[i];
				if (param instanceof Integer) {
					int value = ((Integer) param).intValue();
					try {
						ps.setInt((i+1), value);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof String) {
					String s = (String) param;
					try {
						ps.setString((i+1), s);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof Double) {
					double d = ((Double) param).doubleValue();
					try {
						ps.setDouble((i+1), d);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof Float) {
					float f = ((Float) param).floatValue();
					try {
						ps.setFloat((i+1), f);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof Long) {
					long l = ((Long) param).longValue();
					try {
						ps.setLong((i+1), l);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof Boolean) {
					boolean b = ((Boolean) param).booleanValue();
					try {
						ps.setBoolean((i+1), b);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof java.sql.Date) {
					java.sql.Date d = (java.sql.Date) param;
					try {
						ps.setDate((i+1), d);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				} else if (param instanceof Timestamp) {
					Timestamp d = (Timestamp) param;
					try {
						ps.setTimestamp((i+1), d);
					} catch (SQLException e) {
						e.printStackTrace();
					}
				}
			}
		}
		try {
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			rs = ps.getGeneratedKeys();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if(rs.next()){
				returnObj = rs.getObject(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return returnObj;
	}


转载于:https://my.oschina.net/xlyjx/blog/487479

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值