MyBatis变量自动加单引号问题

为了防止SQL注入,MyBatis在调用Mapper中的SQL语句是,会为变量值自动加单引号

select * from table_a where name=#{name}

 如果变量name=“abc”,则实际执行的SQL语句为

select * from table_a where name='abc'

 但如果变量是表名,就会出现问题

create table if not exists #{tableName}(name varchar(128))

 如果变量tableName="abc",则实际执行的SQL为

create table if not exists 'abc'(name varchar(128))

 此SQL无法执行,其实可以将变量引用方式#{}改为${}

create table if not exists ${tableName}(name varchar(128))

 则实际执行SQL为

create table if not exists abc(name varchar(128))

猜你喜欢

转载自buddie.iteye.com/blog/2357602