当前位置: 首页 > 网络应用技术

如何确定Mybatis参数的类型?

时间:2023-03-08 23:39:00 网络应用技术

  最近,当讨论某些合作伙伴和不同时,他们提到他们被字符串替换。根据我个人的理解,它的主要作用是占据位置。当人参类型是整形手术时,最终的剪接SQL也应该是塑料,而不是弦线的方式

  让我们看一下映射器接口中的不同参数类型。

  我们使用springboot + mybatis + mysql构建实例演示

  核心依赖项,至于版本选择,请转到MVN仓库,找到最新的

  另一个不请求的是DB配置信息,

  用于测试的数据库

  测试数据,主要是字段,带有许多数字的字符串

  本文忽略了Mybatis中PO,映射器接口和XML文件的详细信息。有兴趣的合作伙伴可以直接查看底部源代码(或检查上一个博客文章)

  对于上述情况,定义一个基于名称查询数据的接口,但是此名称参数类型是整数

  映射器接口:

  相应的XML文件如下

  上面的写作非常普遍。我们的问题是整数,那么最终的SQL是什么?

  那么如何确定最终SQL是什么样的?这是一种直接输出MySQL以执行SQL日志的方法

  在MySQL Server上执行以下两个命令,打开SQL执行日志

  访问上面的接口后,我们会发现在最终发送到mySQL的SQL语句中,它仍然是参数替换后的整数

  在使用中,有时除了参数外,我们还将指定JDBCTYPE。那么,我们是否会指定这将影响XML中的最终SQL生成?

  生成的SQL如下

  从实际的SQL来看,此JDBCTYPE不会影响最终的SQL参数缝线。那么它主要使用的是什么?(它主要适用于NULL中引入时可能发生的类型转换)

  当我们将参数类型作为字符串传递时,最终的SQL推理应带来报价编号

  相应的XML

  以上的最终SQL如下

  阅读了上述部分后,基本上有一个简单的推论(当然,您需要从源头进行分析)

  所以问题是,你为什么知道这一点?

  例如,在本文的示例中添加了索引。当我们的SQL无法转到索引时。如果要采用索引,则需要传递的参数必须是字符串。

  基于此,我们有一个应用程序方案。为了避免参数类型的问题,不能将索引带走。我们希望参数的参数是参数的类型。

  我们使用自定义类型Handler实现此场景

  然后在XML中指定typehandler

  上面的SQL输出将带有一个引号,以便可以从源求解参数类型的类型,这将导致索引的问题

  本文使用一个简单的示例来测试映射器接口中的不同参数类型,即最终SQL生成的影响

  当我们希望无论哪种类型的参数,最终的SQL都会被字符串替换,我们可以在定义的帮助下实现它。这可以避免来源。

  最后一个问题是,上述结论是可靠的吗?Mybatis中的最终SQL缝线在哪里?此SQL剪接的过程是什么?

  关于SQL剪接的整个过程,将要启动随后的博客文章。我是灰色。经过帮助的大兄弟喜欢它,收取价格并进行评估。

  微信公共帐户:一个灰色博客