我想在 SQL Server 中定义列,以便 Mybatis Generator 生成java.time.Instant
或java.time.OffsetDateTime
. 根据Mybatis Generator Core,具有类型TIMESTAMP_WITH_TIMEZONE
的列映射到OffsetDateTime
when useJSR310Types
istrue
我在 DDL 中使用了类型DATETIMEOFFSET
,但我的实体被翻译为Object
. 当然使用DATETIME2
results in LocalDateTime
,这不是我想要的。
示例 DDL
CREATE TABLE Users
(
UserId Int IDENTITY (1,1) NOT NULL,
UserFirstName Nvarchar(50) NOT NULL,
UserLastName Nvarchar(50) NOT NULL,
UserEmail Nvarchar(100) NOT NULL,
Created DATETIME2 NOT NULL,
Creator INT NOT NULL,
Modified DATETIME2 NOT NULL,
Modifier INT NOT NULL
);
相关片段generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"https://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<contexttargetRuntime="MyBatis3DynamicSql" defaultModelType="hierarchical">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="${jdbcDriverClass}"
connectionURL="${jdbcUrl}"
userId="${jdbcUsername}"
password="${jdbcPassword}"
>
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<property name="useJSR310Types" value="true"/>
</javaTypeResolver>
<javaModelGenerator targetPackage=""
targetProject="${workingDir}/src/main/java"/>
<javaClientGenerator targetPackage=""
targetProject="${workingDir}/src/main/java" type="ANNOTATEDMAPPER"/>
<table tableName="Users" domainObjectName="User" mapperName="UserBaseMapper">
<property name="rootInterface" value=""/>
<generatedKey column="UserId" identity="true" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>