Mybatis 表名做参数

前置知识

1. #{} / ${} 的区别

1.1 #{}是参数标记符

#{} 是预编译状态下的参数标记符,一个 #{} 会被解析成一个 ?
xml 中句子

select * from user where name = #{name};

预编译后:

select * from user where name = ?

1.2 ${} 仅是占位符

${} 是非预编译状态下的参数标记符,不会对传入的参数做任何加工。

select * from user where name = '${name}';

当传入参数jack时,上面的句子被解析为

select * from user where name = 'jack';
使用 ${} 会存在 sql 注入的问题

2. statement

Mybatis 中这么一个参数,statementType = [STATEMENT | PREPARED | CALLABLE]。这个参数是用来执行 SQL 的模式,模式状态下是 PREPARED

  • STATEMENT, 设定为非预编译语句模式
  • PREPARED, 设定为预编译模式
  • CALLABLE,设定为兼容模式,myBatis 会根据 #{} / ${} 自动进行处理。

实践中遇到的问题

解决办法:
我做如下更改后,跑通了.
为什么用_parameter能跑通?待查,现在不明白。


    

Mybatis 表名做参数_第1张图片
图1.PNG
Mybatis 表名做参数_第2张图片
图2.PNG
Mybatis 表名做参数_第3张图片
图3.PNG

你可能感兴趣的:(Mybatis 表名做参数)