当前使用版本(必填,否则不予处理)

最新版本3.5.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

我想调用了mysql的一个方法,想想mysql的这个方法里传参,查询的结果和MySQL查询结果不一致,向mysql方法里传参的方式查不出数据。

这是我写的代码, date作为一个参数想传入到mysql的STR_TO_DATE方法里,但很遗憾,这样做似乎不起效果

@Select("SELECT check_id\n" + "FROM yiban.dormitory_check_info\n" + "WHERE STR_TO_DATE(#{date}, '%Y-%m-%d')=STR_TO_DATE(dormitory_check_info.check_time_start, '%Y年%m月%d日')\n" + "AND status =1") Object get_checkId(String date);

重现步骤(如果有就写完整)

这是生成的完整的sql语句

==> Preparing: SELECT check_id FROM yiban.dormitory_check_info WHERE STR_TO_DATE(?, '%Y-%m-%d')=STR_TO_DATE(dormitory_check_info.check_time_start, '%Y年%m月%d日') AND status =1 ==> Parameters: "2023-4-22"(String) <== Total: 0

这看起来很正常,却查不出来任何值,当我把这条mysql语句放入navicat执行时,却一切正常。

SELECT check_id FROM yiban.dormitory_check_info WHERE STR_TO_DATE("2023-4-22", '%Y-%m-%d')=STR_TO_DATE(dormitory_check_info.check_time_start, '%Y年%m月%d日') AND status =1

甚至如果我把,注解这里的#{date换成} ==> Parameters: "2023-4-22"(String) 这里的"2023-4-22"都可以查出数据,而通过#{}的方式似乎没有有效的把值传入。 @Select("SELECT check_id\n" + "FROM yiban.dormitory_check_info\n" + "WHERE STR_TO_DATE(#{date}, '%Y-%m-%d')=STR_TO_DATE(dormitory_check_info.check_time_start, '%Y年%m月%d日')\n" + "AND status =1")

Comment From: Obsucre777

"2023-4-22"被作为一个字符串传入了,按理来说这个字符串是2023-4-22,是我传参的时候穿错了传成了"2023-4-22",应该是2023-4-22,导致查询失败