1.问题描述

使用的是 MYSQL 数据库,在查询过程中一个 日期 字段始终查询出来的和数据存储的值不一致。数据库存储的 数据 以及 数据结构 如下:

name current_time
任务编号 2021-09-22 11:31:13

查询出来的数据是:

name=任务编号, currentTime=Thu Jan 01 11:31:13 CST 1970

这个currentTime的数据怎么也对不上,时间是对的但是日期却是从1970年01月01日开始的。XML中查询的SQL语句如下:

 <select id="select" parameterType="string" resultType="xxx">
        SELECT
        name AS name,
        current_time AS currentTime
        FROM t_number
        WHERE id = #{id, jdbcType=VARCHAR}
    </select>

就是一个普通的单表查询,将上述XML文件中的SQL拷贝到数据库执行,结果如下:

SELECT
        name AS name,
        current_time AS currentTime
        FROM t_number
        WHERE id = 'RWBH'
-------查询结果-----------
任务编号	11:35:23

也是一样的结果。

2.问题原因

这个原因很难排查,也上网查询过设置数据库时区,使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")注解,都没用。
通过我把SQL拷贝到数据库进行执行我发现结果是一致的,我在想是不是字段出现问题了,结果我发现XML写的SQL语句中current_time字段的颜色和其他的字段颜色不一致,我确信就是字段名称出现了问题:
在这里插入图片描述
原来current_time字段是MYSQL中的关键字是一个函数,如下:
在这里插入图片描述
在这里插入图片描述
所以在查询的时候,返回的结果不是数据库中存储的数据,而是current_time这个MYSQL自带的函数的结果。

3.问题解决

current_time字段换成其它的即可。换成current_times:

namecurrent_times
任务编号2021-09-22 11:31:13

出现出来的数据是:

name=任务编号, currentTimes=Sat Sep 25 00:38:02 CST 2021

解决!这个问题吧,都不算个坑,但是如果不小心,也足够让我们摔个大跟头了~

1.问题描述使用的是MYSQL数据库,在查询过程中一个日期字段始终查询出来的和数据存储的值不一致。数据库存储的数据如下:namecurrent_time任务编号2021-09-22 11:31:13查询出来的数据是:name=任务编号, currentTime=Thu Jan 01 11:31:13 CST 1970这个currentTime的数据怎么也对不上,时间是对的但是日期却是从1970年01月01日开始的。XML中查询的SQL语句如下: &lt;select DECLARE @ParameterSQL NVARCHAR(MAX)='SELECT * FROM table'; DECLARE @SQL NVARCHAR(MAX) DECLARE @XMLString VARCHAR(MAX) DECLARE @XML XML DECLARE @Paramlist NVARCHAR(1000) SET @Paramlist = N'@XML XML OUTPUT' SET @SQL = 'WITH PrepareTable (XMLString)
easymybatis提供的一些查询方式已经满足大部分的查询需求,但是有些复杂的sql语句还是需要xml文件中。easymybatis同样支持将sql语句xml中,具体配置如下: 在application.properties添加一句 mybatis.mapper-locations=classpath:/mybatis/mapper/*.xml这句话用来指定xml文件的存放地。 在reso
1.#{}与${} #{}表示一个占位符,使用占位符可以防止sql注入, $ {}通过${}可以将parameterType传入的内容拼接在sql中,不能防止sql注入,但是有时方便 SELECT * FROM USER WHERE username LIKE '%${name}%' 再比如order by排序,如果将列名通过参数传入sql,根据传的列名进行排序,应该为: ORDER B...
1. 重现Bug:在不同的环境下,尝试去重现出现Bug的场景,并记录下来。 2. 分析Bug:分析Bug出现的原因,可以通过查看日志、排查代码等方式找到Bug的根源。 3. 解决Bug:一旦找到Bug的根源,就需要着手解决Bug。通常有两种方式:修复代码或者调整配置。 4. 测试Bug:修复完Bug后,需要进行测试验证,确保修复后应用程序仍然能够正常工作。 5. 部署Bug:修复完Bug后,将更新后的代码部署到生产环境中,确保应用程序的正常运行。 以上是解决Bug的一般流程,但具体的解决方案还要根据具体的Bug情况进行调整。