mybatis动态列名

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里的变量取值是${xxx},不是#{xxx}。因为${}是将传入的参数直接显示生成sql,如${xxx}传入的参数为字符串数据,需在参数传入前加上引号,如:

String name = "sprite";
        name = "'" + name + "'";

如果使用的是动态列名,则不需要添加 ' ',直接传入参数即可

  <!--查询月度指标-->
  <select id="findMonthIndicator" resultMap="BaseResultMap"
          parameterType="com.jn.ssr.superrescuereporting.web.entity.PerformanceIndicatorEntity" statementType="STATEMENT">
    select  ${param.orderNumber},${param.turnover}
     from in_performance_indicators
     <where>
       <if test="param.year != null">
         and year = #{param.year,jdbcType=INTEGER}
       </if>
     </where>
  </select>

转载于:https://www.cnblogs.com/huanghuanghui/p/9950876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值