mybatis动态参数传递表名

@Select("select * from webapp.${type} WHERE `cycle`=#{cycle}")
List selectByCycle(String type, String cycle);

注意表名要使用$符号,字段名使用#

表名作为变量时,必须使用 ${ },表名是字符串,使用 sql 占位符替换字符串时会带上单引号 '',这会导致 sql 语法错误

如果将表名这样#{type}传递,那么预编译时候的sql为

select * from webapp.? WHERE `cycle`=?

传递的参数是type="user",cycle="2022",那么在占位符进行变量替换后,sql 语句变为

select * from webapp.'user' WHERE `cycle`='2022'

这样的话sql语句就错误了,表名不能加单引号,可以加反引号``

你可能感兴趣的:(SpringBoot,SQL,java,mybatis,mysql,数据库)