我的项目库版本是 mybatis 3.1 postgresql 9.2
我想在选择查询之前更改连接时区。并回到时区。
首先,我试试吧。在mapper xml中设置时区。
set timezone = 'Asia/Seoul' ;
select now();
set timezone = 'UTC';
我认为如果选择查询时发生错误,则Timezone不会设置为UTC。 如果时区未设置为UTC,则对不同请求的查询将为utc time。
第二,我试试看。春天DI注入sqlsession。
sqlsession.selectOne(namespace.setTimezone, 'Asia/Seoul');
sqlsession.selectOne(namespace.selectNow);
sqlsession.selectOne(namespace.setTimezone, 'UTC');
我想。三个sqlsession这可能不是同一个连接。
如何更改时区并返回上一个时区? 如果我处理事务,三个sqlsession发生的是同一个连接吗?
答案 0 :(得分:0)
使用交易。
mybatis是值得的,它将支持数据库事务,并且它必须对一个事务中的所有语句使用相同的连接。
我不知道mybatis是否可以执行此操作,但在PostgreSQL中,您可以使用SET LOCAL
仅在事务持续时间内更改参数。它将在交易结束时自动重置。