首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

接收参数为null的问题

今天遇到了这样一个问题:Controller层接收到前端传入的参数,传给Service层去使用MyBatis-Plus的xml中查询数据库,结果,在数据库的xml中并没有接收到Service层传过来的参数...首先要明确一个问题: SpringBoot项目分为Controller、Service、Dao(Mapper)层 Controller去掉Service的接口的方法,Service的具体实现在xxxxServiceImpl...我淡定的在Controller打了一个断点,点到为止,我一看,前端传给我的参数没有问题,于是我看dao层的接口入参,由于接口中的入参不止一个,所以我使用了@Param注解来给参数取名字,我的第一反应是:...是不是@Param没识别出参数或者是@Param(“xxx”)的参数名称取错了,仔细排查后发现并不是,在Dao层打印参数,发现dao层接收到的参数也是一个null,这就说明参数可能从Service层里就是一个...所以,问题就出在这 Java接口参数顺序一定要和参数列表顺序一致,否则可能会出现参数为null的问题。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1、判断传入的参数为0或整数的多种思路

    一、判断字符串是否为整数的多种思路 1)使用sed加正则表达式 删除字符串中的所有数值,看字符串长度是否为0来判断 [ -n "`echo oldboy123|sed 's#[0-9]##g'`" ]...=~ ^[0-9]+$ ]] && echo int || echo char int 二、判断字符串是否为0的多种思路 1) 使用字符串表达式-z和-n [ -z "oldboy" ] && echo...zero" 3)使用expr length函数判断 [ `expr length "oldboy"` -eq 0 ] && echo "zero" || echo "no zero" 4)使用wc -L参数统计...length函数统计 [ `echo oldboy|awk '{print length}'` -eq 0 ] && echo "zero" || echo "no zero" 三、扩展:判断传入的参数个数是否满足要求...假如要求传入两个参数,则可以直接判断第二个参数是否为空,如果为空,则表示第二个参数不存在 [ -z $2 ] && echo "zero" || echo "no zero"

    91130

    一个值得深思的小问题 - 请求中的参数值为空要不要携带该参数?

    我这朋友的问题是这样的,前端请求接口,带过去了一些参数,但是其中有个参数没值,也就是空,但是呢后端在接收该值的时候没有类型判断(该字段是int类型),相当于直接把一个空字符串直接转为int类型。...比如,请求参数如下 name=bigerfe&age=&a=1 其中参数age是int类型,但是前端传了空,后端取参数的时候报错了。...然后要出一个传参规范,声明string类型的字段如果值为空串的,请求的时候就不要携带该参数。其他类型的会给一个默认值。...比如这样,age字段干掉了 name=bigerfe&a=1 我这朋友不乐意了,觉得这不合理,认为本质问题就是兜底处理没做好,怎么扯到规范上来了,觉得这个规范对他们的影响挺大,需要改代码,不能接收这个提议...接口规范中为每个字段说明其类型,并且给出默认值 服务端做统一的类型验证,不符合的直接给出错误码 那是被什么样的问题给拍回去了呢? 如果这个字段是必填的,而且是空串,那这个字段可以带吗?

    3.3K20

    PHP中的MySQLi扩展学习(六)MySQLI_result对象操作

    PHP中的MySQLi扩展学习(六)MySQLI_result对象操作 在之前的文章中,我们就已经接触过 MYSQLI_result 相关的内容。它的作用其实就是一个查询的结果集。...,同样它也可以指定返回结果集的格式,和 fetch_all() 是类似的,只不过它是只获取下一行而不是全部的数据集,而且它的参数默认是返回的 MYSQLI_BOTH ,也就是数字下标和键名下标同时返回结果...另外还有一个 fetch_assoc() 方法,直接就是返回 MYSQLI_ASSOC 格式的数据,这个方法不需要任何参数,它可以看成是 fetch_array(MYSQLI_ASSOC) 这种使用方式的一个封装...我们也可以指定一个类,并且可以为这个类的构造函数传递参数,这一点也和 PDO 中的相关功能一样。...而 fetch_field_direct() 则是根据参数来获取指定下标的字段信息。

    2.9K10

    【PHP】当mysql遇上PHP

    SQL语句保存在$query变量中 $mysqli_result = $mysqli->query($query);//通过调用上面返回的mysqli对象中的方法,返回一个结果集对象(mysqli_result...);//在面向过程风格里,$mysqli对象成了该方法中的参数,也返回一个结果集对象(mysqli_result) while($row = mysqli_fetch_assoc($mysqli_result...> 思维导图 运行结束后: 关键的一个方法是bind_param()方法,它接受多个参数,其中 第一个参数代表后面参数的类型。...第一个参数是一个字符串,由固定顺序的字符组成,这些字符包括“s”,”i”,”d”,”b”,分别表示字符串,整型,双精度和二进制文本,依次代表后面参数的类型。...,,$number1是整型 【注意】 不能直接向bind_param()第二个即以后的参数中写入具体的变量值!

    5.7K90

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    在实例化过程中,我们并没有给 mysqli 的构造函数传递任何的参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...其实这也引出了我们 next_result() 这个方法的作用。它就相当于是为执行获取下一个结果的操作做准备,也可以看作是将游标移动到了下一条 SQL 语句上。...(mysqli_result)#1 (5) { // ["current_field"]=> // int(0) // ["field_count"]=> // int(4) //...总结 光说不练假把式,虽说多语句执行看似很美好,但即使在这简单的测试代码中,也会出现各种问题,大家一定要自己多尝试一下。...在日常的开发过程中,最好还是一条一条的语句来执行,避免出现各种无法查明的问题而影响我们正常的业务执行。至于到底要不要使用这个能力,还是大家仁者见仁智者见智了。

    2.9K20

    常见的sql注入环境搭建

    password','database'); $conn = mysqli_connect('数据库服务器','username','password','database'); // 参数内容可以单独设置为一个变量引用...''); //mysqli_error -- 返回最近调用函数的最后一个错误描述 $row=mysqli_fetch_array($result, MYSQLI_BOTH);...; // echo '查询完成'; } /* 如上源码,当echo返回结果为第一类情况则适用布尔盲注的方法不断的猜结 当echo返回结果为第二类情况则适用时间盲注,通过时间延迟的方式来判断布尔结果并不断的猜解...时间盲注测试 if(ascii(substr(database(),1,1))='t',1,sleep(10)); -- + ? ?...宽字节注入 环境构造注意:该注入环境要求mysql数据库采用GBK编码;宽字节注入与HTML页面编码是无关的,即HTML页面是UTF-8编码,只要mysql是GBK都可以存在宽字节注入; ?

    1.3K30

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    在实例化过程中,我们并没有给 mysqli 的构造函数传递任何的参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...:// bool(false)// int(1)// ========// 第2条:// bool(false)// int(0)// ========// 第3条:// object(mysqli_result...其实这也引出了我们 next_result() 这个方法的作用。它就相当于是为执行获取下一个结果的操作做准备,也可以看作是将游标移动到了下一条 SQL 语句上。...总结 光说不练假把式,虽说多语句执行看似很美好,但即使在这简单的测试代码中,也会出现各种问题,大家一定要自己多尝试一下。...在日常的开发过程中,最好还是一条一条的语句来执行,避免出现各种无法查明的问题而影响我们正常的业务执行。至于到底要不要使用这个能力,还是大家仁者见仁智者见智了。

    3K00

    简单过程浅析以及遇到的问题分析

    1.在连接数据库与PHP之前首先要检查一下自己PHP文件夹里的php.ini配置文件里是否有 ;extension=php_mysqli.dll  有的话改成extension=php_mysqli.dll...*     如果执行失败 - false 第二步我用的是插入一条数据  如果这里用的是SELECT  查询语句的话   通过mysqli_query()方法,返回mysqli_result结果集对象     ...*我们就可以解析mysqli_result结果集对象 最后一步: mysql_close("$conn"); 关闭与MySQL数据库的连接        mysqli_close(连接对象) 大概代码就是这样...php // 使用面向对象风格连接MySQL /* * 1....定义SQL语句 * 默认情况下的编码格式为ISO8859-1 * * 如何解决中文乱码问题 * mysqli_query("SET NAMES UTF8");

    60860

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    ; $username = 'kkk'; $stmt->bind_param("s", $username); // 绑定参数 $stmt->bind_result($col1, $col2, $col3...在这个表中,我们有四个字段,所以通过引用传递的方式绑定了 4 个列变量。当使用 fetch() 进行查询结果对象的遍历时,就像使用引用的方式为这 4 个列变量赋值。...而真正获得结果集的数据其实是通过另一个方法来获得一个 MySQLI_result 对象,然后再使用这个对象里面的方法就可以像 PDO 的 fetch() 一样来获得真正的结果集了。...MySQLI_result 对象。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。

    2.5K00

    MySQL 数据库使用SQL SELECT语句来查询数据

    你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。...该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来使用或输出所有查询的数据。...mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。...以下实例为从数据表 runoob_tbl 中读取所有记录。 实例 尝试以下实例来显示数据表 runoob_tbl 的所有记录。 注意:记住如果你需要在字符串中使用变量,请将变量置于花括号。...在上面的例子中,PHP mysqli_fetch_array() 函数第二个参数为 MYSQLI_ASSOC, 设置该参数查询结果返回关联数组,你可以使用字段名称来作为数组的索引。

    2.7K20

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    ; $username = 'kkk'; $stmt->bind_param("s", $username); // 绑定参数 $stmt->bind_result($col1, $col2, $col3...在这个表中,我们有四个字段,所以通过引用传递的方式绑定了 4 个列变量。当使用 fetch() 进行查询结果对象的遍历时,就像使用引用的方式为这 4 个列变量赋值。...而真正获得结果集的数据其实是通过另一个方法来获得一个 MySQLI_result 对象,然后再使用这个对象里面的方法就可以像 PDO 的 fetch() 一样来获得真正的结果集了。...MySQLI_result 对象。...然后通过该对象的 fetch_assoc() 就获得了键名形式的结果集数组。 关于 MySQLI_result 对象的内容,我们将在下篇文章中再进行详细的学习了解。

    2.1K10

    简单过程浅析以及遇到的问题分析

    1.在连接数据库与PHP之前首先要检查一下自己PHP文件夹里的php.ini配置文件里是否有 ;extension=php_mysqli.dll  有的话改成extension=php_mysqli.dll...*     如果执行失败 - false 第二步我用的是插入一条数据  如果这里用的是SELECT  查询语句的话   通过mysqli_query()方法,返回mysqli_result结果集对象     ...*我们就可以解析mysqli_result结果集对象 最后一步: mysql_close("$conn"); 关闭与MySQL数据库的连接        mysqli_close(连接对象) 大概代码就是这样...php // 使用面向对象风格连接MySQL /* * 1....定义SQL语句 * 默认情况下的编码格式为ISO8859-1 * * 如何解决中文乱码问题 * mysqli_query("SET NAMES UTF8");

    1.2K60
    领券