Mr.Li128 2023-09-16 15:39 采纳率: 12.5%
浏览 10
已结题

mybatis返回值用Map

mybatis 在xml文件中查询数据返回值用map<Sring,Object>集合接收时间类型会被转换为long类型时间戳,此查询为动态查询,表名称和字段都不是固定的(select * from #{tabName})怎样能让查询出来的结果不转换保持在数据库中的格式

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-16 15:40
    关注

    引用 皆我百晓生 小程序回复内容作答:
    要让查询结果保持在数据库中的格式,你可以使用MyBatis的ResultMap来定义结果的映射关系。在ResultMap中,你可以指定每个字段的类型和转换方式。

    首先,在你的xml文件中定义一个ResultMap,其中包含所有可能的字段,例如:

    <resultMap id="myResultMap" type="java.util.HashMap">
      <result property="column1" column="column1" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP" />
      <result property="column2" column="column2" javaType="java.util.Date" jdbcType="DATE" />
      <result property="column3" column="column3" javaType="java.math.BigDecimal" jdbcType="DECIMAL" />
      <!-- 其他字段... -->
    </resultMap>
    

    在上面的代码中,column1column2column3是你查询语句中的字段名,javaType是希望映射到的Java类型,jdbcType是对应的数据库类型。

    然后,在你的查询语句中使用<resultMap>来指定使用该ResultMap,例如:

    <select id="yourQuery" resultMap="myResultMap">
      SELECT * FROM ${tabName}
    </select>
    

    在上述代码中,yourQuery是你的查询语句的id,${tabName}是你的动态表名。

    最后,在Java代码中使用selectOneselectList方法执行查询,接收返回的Map对象,例如:

    Map<String, Object> resultMap = sqlSession.selectOne("yourNamespace.yourQuery");
    

    这样,查询结果中的时间类型字段将会保持在数据库中的格式,而不会被转换为长整型时间戳。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥15 Qt4代码实现下面的界面
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码