he036002 2024-11-28 15:02 采纳率: 0%
浏览 57

MyBatis访问SQLServer查询的每个字段都被转为nvarchar(4000)

问题现象:数据库中字段类型是char,使用mybatis框架和mybatis-plus框架后,跟踪得到的SQL都是nvarhar(4000)。

数据库表结构如下

img

代码如下:

img

跟踪到的SQL如下:

img

造成的影响:如果查询时没有strpk时,在几千万的数据里,耗时直接1分钟起,如果有这个strpk则秒出。如果把跟踪的这个SQL手动改成char,即使没有这条数据,也是秒出结果。

希望达到的效果:数据库里是什么类型,跟踪得到的就是什么类型。

这个帖子里也表达了同样的问题
https://blog.csdn.net/abzo62973/article/details/101804492

  • 写回答

1条回答 默认 最新

  • 编号灬9527 2024-11-28 16:32
    关注

    数据类型是string的时候,不管jdbcType是char还是varchar,都是同一个类型的typeHandler,你如果需要单独处理的话,自己按需替换呗

    img


    有一说一,是sqlserver才有这个问题的吗?mysql和oracle我都用过,没出现过这个问题

    评论

报告相同问题?

问题事件

  • 创建了问题 11月28日