mybatis3.x 插入完整日期

本文介绍在使用MyBatis框架进行数据库操作时,如何正确处理包含日期和时间的字段,确保完整的时间信息(包括时分秒)能够正确地保存到Oracle数据库中。

项目中采用mybatis3.x作为orm框架,mapper.xml是采用mybatis自动生成工具生成的。当oracle数据库字段类型为data类型时,生成的pojo的类型时java.util.Date。

但是在实际使用时发现,pojo中的date数据是完整的(包括日期和时分秒)但插入后,数据库中的时间只剩下日期,时分秒丢失了。

后来google了老半天,终于发现了一个解决办法:

对于Ibatis操作Date/Time/DateTime,总结如下:
将pojo的属性类型设置为java.sql.Date(或java.sql.Time, java.sql.Timestamp),此时会严格遵循这三种类型的语义。但此方法因存在前文中提到的性能问题,在JDK1.6以前的JDK版本中能少使用就少使用。
如果你想在pojo中使用java.util.Date, 则要注意:
完整的日期时间,要确保jdbcType为空,或为DATE,TIME以外的值
只需要时间,要指定jdbcType=”TIME”
只需要日期,要指定jdbcType=”DATE”


所以要插入完整时间只需:

1,将映射的XML文件里的,pojo和字段映射的地方  jdbcType="DATE" 去掉。

2,将insert语句中,#{}引用date类型的参数时指定的jdbcType=DATE 去掉。

以上即可!


<think>首先,用户的问题是关于如何在MyBatisX中添加自定义注释,特别是创作者信息。用户提到了参考站内引用,这些引用提供了关于MyBatisX的一些信息。 回顾引用内容: - 引用[1]:解释了MyBatisX生成时的选项,如annotation和template勾选,以及comment选项的作用。 - 引用[2]:描述了如何使用MyBatisX插件生成Mapper和实体类,包括路径设置和选项建议。 - 引用[3]:详细说明了如何自定义模板,包括freemarker语法示例,用于生成domainvo.ftl文件,其中包含了注释和验证注解。 用户想要添加自定义注释,比如创作者信息。从引用[3]中可以看出,MyBatisX支持自定义模板,这似乎是实现自定义注释的关键。 所以,我的回答需要基于这些引用,指导用户如何在MyBatisX中添加自定义注释。 步骤: 1. **理解自定义模板**:引用[3]展示了如何创建一个自定义模板(如domainvo.ftl),其中使用了freemarker语法来定义生成的代码结构,包括注释。 2. **添加创作者信息**:用户想要添加如作者、创建日期等。在示例模板中,有类似`@author Heng.Wei`和`@date ${.now?string(&#39;yyyy-MM-dd HH:mm:ss&#39;)}`的部分,这正是自定义注释的例子。 3. **配置模板**:引用[3]提到需要添加模板配置。用户需要创建或修改模板文件,然后在MyBatisX中配置使用这些模板。 具体步骤: - 创建自定义模板文件(如.ftl文件)。 - 在模板中添加所需的注释部分,使用freemarker变量来动态插入信息。 - 在MyBatisX插件设置中指定使用这些自定义模板。 回答结构: - 由于用户问题明确,我需要以清晰、逐步的方式回答。 - 使用中文回答。 - 遵循系统级指令:行内数学表达式用$...$(但这里可能不涉及数学),独立公式用$$...$$(同样不相关),确保LaTeX语法正确(这里主要是代码和文本)。 - 生成相关问题:在回答末尾添加相关问题。 - 引用标识:在引用的内容末尾自然地添加引用标识,如[^1]。 回答大纲: 1. **介绍**:简要解释MyBatisX支持自定义模板来添加注释。 2. **步骤指南**: - 步骤1: 创建或修改模板文件。 - 步骤2: 在模板中添加自定义注释部分(如作者信息)。 - 步骤3: 配置MyBatisX使用该模板。 - 步骤4: 生成代码以应用自定义注释。 3. **示例**:提供一个简单的模板示例,展示如何添加创作者信息。 4. **结论**:总结方法。 5. **相关问题**:生成2-3个相关问题。 示例模板代码: 基于引用[3],我可以调整示例来突出创作者信息。 例如: ```freemarker package ${domainvo.packageName}; import java.util.Date; import java.util.List; import java.io.Serializable; import javax.validation.constraints.*; import java.io.Serializable; import java.util.*; /** * @author YourNameHere // 自定义创作者信息 * @date ${.now?string(&#39;yyyy-MM-dd HH:mm:ss&#39;)} // 自动生成日期 */ @Data public class ${domainvo.fileName} implements Serializable { // 字段定义... } ``` 相关问题: 1. 如何自定义MyBatisX模板以添加更多验证注解? 2.MyBatisX中,如何设置模板路径? 3. 自定义模板时,如何处理不同的数据库字段类型? 确保引用: - 在解释步骤时,提到引用[3]作为参考。 - 例如:"如引用[3]所示,您可以通过自定义模板文件(如.ftl文件)来添加注释。" 最后,输出格式: - 以用户可见层开始,直接回答问题。 - 结构清晰,使用标题或编号。</think>### 如何在 MyBatisX 中添加自定义注释(如创作者信息) MyBatisX 支持通过自定义 FreeMarker 模板(.ftl 文件)来添加注释,包括创作者信息(如作者、日期等)。以下是详细步骤: #### 步骤 1: 创建或修改自定义模板文件 - **定位模板目录**:在项目中创建或编辑 FreeMarker 模板文件(如 `domainvo.ftl`)。模板通常存储在 `src/main/resources/templates` 目录下(需手动创建目录)。 - **添加创作者注释**:在模板中使用 FreeMarker 语法插入动态变量。例如,添加 `@author` 和 `@date` 注释: ```freemarker package ${domainvo.packageName}; import java.io.Serializable; /** * @author ${user.name} // 自定义创作者姓名(需配置变量) * @date ${.now?string(&#39;yyyy-MM-dd HH:mm:ss&#39;)} // 自动生成日期 */ @Data public class ${domainvo.fileName} implements Serializable { <#list tableClass.allFields as field> /** * ${field.remark!} // 字段注释(来自数据库) */ private ${field.shortTypeName} ${field.fieldName}; </#list> } ``` - **关键说明**: - `${user.name}`:需替换为实际值(例如硬编码为 `"YourName"` 或通过环境变量注入)。 - `${.now?string(...)}`:自动生成当前日期,无需修改。 - 其他占位符(如 `${field.remark!}`)由 MyBatisX 自动填充数据库字段注释[^3]。 #### 步骤 2: 配置 MyBatisX 使用自定义模板 1. 在 IDEA 中,打开 **Database 面板**(右侧菜单栏),右键点击目标表。 2. 选择 **MyBatisX → Generate**,进入生成向导。 3. 在 **Options** 设置中: - 勾选 **Template** 选项。 - 指定自定义模板路径(如 `src/main/resources/templates/domainvo.ftl`)。 - 确保 **Comment** 选项勾选,以保留字段注释[^1][^2]。 4. 点击 **Finish**,生成的实体类将包含自定义注释。 #### 步骤 3: 验证生成结果 - 生成的实体类文件(如 `User.java`)将包含定义的注释: ```java /** * @author YourName // 自定义创作者信息 * @date 2025-03-25 14:30:00 // 自动生成 */ public class User implements Serializable { // 字段注释... } ``` #### 注意事项 - **变量支持**:MyBatisX 默认不直接支持动态用户变量(如系统用户名)。若需动态值,需手动修改模板或通过外部工具链集成。 - **模板语法**:使用 FreeMarker 语法(如条件判断 `<#if ...>`),可扩展更复杂的注释逻辑[^3]。 - **最佳实践**:建议备份默认模板,避免覆盖核心功能。 通过自定义模板,您可以灵活添加创作者信息、版权声明等注释,提升代码可维护性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值