baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.36k stars 4.31k forks source link

获取数据库中timestampz类型时候,赋给实体的值为null? #5846

Closed zhwuyuhehe closed 9 months ago

zhwuyuhehe commented 10 months ago

当前使用版本(必填,否则不予处理)

当前使用3.5.4.1,具体如下:

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.4.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>

该问题是如何引起的?(确定最新版也有问题再提!!!)

使用快速测试https://github.com/baomidou/mybatis-plus/tree/master/mybatis-plus-boot-starter-test 配置了我的项目,发现获取时间戳为null。 image

重现步骤(如果有就写完整)

后续访问了ChatGPT,排查到使用手动映射字段,会使timestampz数据类型正常获取。 使用@Result手动映射了timestampz类型的数据,可以正常获取数据库中的时间戳。 image

报错信息

测试自己的获取时间戳的函数
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53e82089]
JDBC Connection [HikariProxyConnection@81788921 wrapping org.postgresql.jdbc.PgConnection@322b09da] will be managed by Spring
==>  Preparing: SELECT * from repository
==> Parameters: 
<==    Columns: name, isn, category, cost, price, stock, promoting, update_time
<==        Row: 雪碧柠檬味汽水500毫升, 6928804010220, 即饮型调味饮料, null, 3, 12, 1, 2023-12-13 01:19:08.9069+08
<==        Row: 可口可乐汽水500毫升, 6928804011173, 即饮型调味饮料, null, 3, 15, 1, 2023-12-13 01:20:53.2246+08
<==        Row: 芬达橙味汽水500毫升, 6954767442075, 即饮型调味饮料, null, 3, 40, 1, 2023-12-13 22:49:58.691311+08
<==      Total: 3
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53e82089]
repository(name=雪碧柠檬味汽水500毫升, isn=6928804010220, category=即饮型调味饮料, cost=0.0, price=3.0, stock=12, promoting=1.0, update_time=2023-12-12T17:19:08.906900Z)
repository(name=可口可乐汽水500毫升, isn=6928804011173, category=即饮型调味饮料, cost=0.0, price=3.0, stock=15, promoting=1.0, update_time=2023-12-12T17:20:53.224600Z)
repository(name=芬达橙味汽水500毫升, isn=6954767442075, category=即饮型调味饮料, cost=0.0, price=3.0, stock=40, promoting=1.0, update_time=2023-12-13T14:49:58.691311Z)
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53e82089]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53e82089]
---这里可以通过测试---
测试获取数据库
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3149409c]
JDBC Connection [HikariProxyConnection@1175156694 wrapping org.postgresql.jdbc.PgConnection@322b09da] will be managed by Spring
==>  Preparing: SELECT name,isn,category,cost,price,stock,promoting,update_time FROM repository
==> Parameters: 
<==    Columns: name, isn, category, cost, price, stock, promoting, update_time
<==        Row: 雪碧柠檬味汽水500毫升, 6928804010220, 即饮型调味饮料, null, 3, 12, 1, 2023-12-13 01:19:08.9069+08
<==        Row: 可口可乐汽水500毫升, 6928804011173, 即饮型调味饮料, null, 3, 15, 1, 2023-12-13 01:20:53.2246+08
<==        Row: 芬达橙味汽水500毫升, 6954767442075, 即饮型调味饮料, null, 3, 40, 1, 2023-12-13 22:49:58.691311+08
<==      Total: 3
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3149409c]
repository(name=雪碧柠檬味汽水500毫升, isn=6928804010220, category=即饮型调味饮料, cost=0.0, price=3.0, stock=12, promoting=1.0, update_time=null)
repository(name=可口可乐汽水500毫升, isn=6928804011173, category=即饮型调味饮料, cost=0.0, price=3.0, stock=15, promoting=1.0, update_time=null)
repository(name=芬达橙味汽水500毫升, isn=6954767442075, category=即饮型调味饮料, cost=0.0, price=3.0, stock=40, promoting=1.0, update_time=null)
---分割一下---
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3149409c]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3149409c]
2023-12-14T23:57:06.909+08:00  INFO 23464 --- [MySpring] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2023-12-14T23:57:06.917+08:00  INFO 23464 --- [MySpring] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
miemieYaho commented 10 months ago

百度 mybatis Typehandler