zoukankan      html  css  js  c++  java
  • [Done]mysql in (#{list}) 只能查询/删除第一条的问题

     数据如下(注意age是int类型):

    sql如下(注意是#不是$):

    java代码:

    Mybatis日志(只返回一笔记录):

    直接在mysql中执行(age是int类型,注意参数带引号,确认jdbc是执行的这个sql):

    在不带引号的情况下,正常返回:

    所以问题出在:

      Int类型字段,in条件查询时,传入了String类型的参数,而#处理方式是字段判断参数类型,

          如果是String 会在参数两边加""双引号。

     解决方式:

    1、xml 使用forEach

    2、使用$代替#

    3、使用FIND_IN_SET函数,如:

    当然还有一个遗憾就是,为啥Mysql in操作,int类型匹配String时,要取第一个字段?

    我觉得要么就直接报错,或者不返回记录,这样返回一条反而容易引起误解。

    有哪位大牛知道in的底层实现逻辑吗?

    TODO: 后续深入研究下in底层实现。

  • 相关阅读:
    稀疏核机
    核方法
    变分法
    拉格朗日乘子
    序列数据
    连续隐含变量
    线性回归模型
    采样方法
    线性分类模型
    一些音乐下的评论
  • 原文地址:https://www.cnblogs.com/do-your-best/p/9513194.html
Copyright © 2011-2022 走看看