mybatis动态调用表名、字段名,只能使用${}

动态调用表名的例子:

 <select id="getUser" resultType="java.util.Map" parameterType="java.lang.String" statementType="STATEMENT">
    select 
        ${columns}
    from ${tableName}
        where COMPANY_REMARK = ${company}
  </select>

要实现动态调用表名和字段名,就不能使用预编译了,需添加statementType=“STATEMENT”

statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。
简单说就是一个是预编译的,一个是非预编译的。

如果你要动态传入字段名,表名之类的如果你的sql执行是预编译的,这显然

是不行的,所以你必须改成非预编译的

将传入的数据直接显示生成在sql中,对于字符串数据,需要手动加上引号。

在java代码中,声明的变量不加引号在sql中就会是下面这个格式:
在这里插入图片描述
在这里插入图片描述

相似问题可以参考,希望能帮到你


版权声明:本文为Marlboro8023原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。