[
[
第一二张图是别人写的代码,三四张是我写的代码,一开始我也像他那样在XML文件里面传入的参数配置为java.util.Map,虽然能正常运行,但是却不能传入参数,打印出来的SQL,传入的参数显示为“?”当我把传入的参数类型改为java.util.HashMap又能看到传入的参数为正常,请问为什么,我们代码基本都是一样的啊。
[
[
第一二张图是别人写的代码,三四张是我写的代码,一开始我也像他那样在XML文件里面传入的参数配置为java.util.Map,虽然能正常运行,但是却不能传入参数,打印出来的SQL,传入的参数显示为“?”当我把传入的参数类型改为java.util.HashMap又能看到传入的参数为正常,请问为什么,我们代码基本都是一样的啊。
情况一:parameterType="HashMap"
结果:sql正常执行,参数传递与接收正常。
情况二:parameterType="Map"
结果:sql正常执行,参数传递与接收正常
初步推断你对mybatis的两个符号不知道区别:“#”、“$”
--使用“#”拼接参数的话,打印的sql执行log,就会出现“?”,并且能看到sql的log的下方有形如这样的参数【==> Parameters: 1(String), 0(Integer), 10(Integer)】
例如:假设startTime的值为‘2017-12-16', select * from user where create_time > #{startTime}
执行结果是:
==> Preparing : select * from user where create_time > ?
==> Parameters: 2017-12-16(String)
--使用“$”拼接参数的话,打印的sql是连带参数一起打印出来。
例如:假设startTime的值为‘2017-12-16', select * from user where create_time > #{startTime}
==> Preparing : select * from user where create_time > '2017-12-16'