package jef.database.dialect.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; import jef.database.dialect.DatabaseDialect; import jef.database.jdbc.result.IResultSet; import jef.database.query.Func; /** * TIMESTMP <-> java.lang.Long (毫秒数) * @author jiyi * */ public class TimestampLongMapping extends AbstractTimeMapping{ public Object jdbcSet(PreparedStatement st, Object value, int index, DatabaseDialect session) throws SQLException { if(value==null){ st.setNull(index, java.sql.Types.TIMESTAMP); return null; }else{ Timestamp ts=new java.sql.Timestamp(((Number)value).longValue()); st.setTimestamp(index, ts); return ts; } } public int getSqlType() { return java.sql.Types.TIMESTAMP; } @Override protected String getSqlExpression(Object value, DatabaseDialect profile) { if(value instanceof Long){ value=new Date((Long) value); } return profile.getSqlTimestampExpression((Date)value); } public Object jdbcGet(IResultSet rs, int n) throws SQLException { Timestamp ts=rs.getTimestamp(n); if(ts==null)return null; return ts.getTime(); } @Override public String getFunctionString(DatabaseDialect profile) { return profile.getFunction(Func.current_timestamp); } @Override public Object getCurrentValue() { return System.currentTimeMillis(); } @Override protected Class<?> getDefaultJavaType() { return Long.class; } @Override public void jdbcUpdate(ResultSet rs, String columnIndex, Object value, DatabaseDialect dialect) throws SQLException { Timestamp ts=new java.sql.Timestamp(((Number)value).longValue()); rs.updateTimestamp(columnIndex, ts); } }