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;
}