mybatis 在xml文件中查询数据返回值用map<Sring,Object>集合接收时间类型会被转换为long类型时间戳,此查询为动态查询,表名称和字段都不是固定的(select * from #{tabName})怎样能让查询出来的结果不转换保持在数据库中的格式
4条回答 默认 最新
关注 引用 皆我百晓生 小程序回复内容作答:
要让查询结果保持在数据库中的格式,你可以使用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>
在上面的代码中,
column1
、column2
、column3
是你查询语句中的字段名,javaType
是希望映射到的Java类型,jdbcType
是对应的数据库类型。然后,在你的查询语句中使用
<resultMap>
来指定使用该ResultMap,例如:<select id="yourQuery" resultMap="myResultMap"> SELECT * FROM ${tabName} </select>
在上述代码中,
yourQuery
是你的查询语句的id,${tabName}
是你的动态表名。最后,在Java代码中使用
selectOne
或selectList
方法执行查询,接收返回的Map对象,例如:Map<String, Object> resultMap = sqlSession.selectOne("yourNamespace.yourQuery");
这样,查询结果中的时间类型字段将会保持在数据库中的格式,而不会被转换为长整型时间戳。
解决 无用评论 打赏 举报
悬赏问题
- ¥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 需要完整的共散射点成像代码