请问下Jmix有没有提供获取数据库当前时间的方法
你好,
Jmix 没有提供基于DB的获取时间方法,你可以提供一个 io.jmix.core.TimeSource
类型的 bean 来覆盖框架默认实现。
参考:
public class DatabaseTimeSource implements TimeSource {
@PersistenceContext
EntityManager entityManager;
@Override
@Transactional
public Date currentTimestamp() {
ZonedDateTime zdt = now();
Date date = Date.from(zdt.toInstant());
return date;
}
@Override
@Transactional
public long currentTimeMillis() {
return currentTimestamp().getTime();
}
@Override
@Transactional
public ZonedDateTime now() {
LocalDateTime localDateTime = (LocalDateTime) entityManager.createNativeQuery("select sysdate() from dual ").getSingleResult();
ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
return zdt;
}
}
你好,这个问题可以用Spring的 JdbcTemplate
实现:
@Component
public class MyDao {
private JdbcTemplate jdbcTemplate;
public MyDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public Date getCurrentTime() {
// 根据数据库不同进行修改
String sql = "SELECT NOW()";
return jdbcTemplate.queryForObject(sql, Date.class);
}
}
MySQL 和 Postgres 都有 NOW()
这个方法。如果你是其他类型的数据库,需要自己修改SQL。