MyBatis中${}的用法

参考:
https://blog.csdn.net/weixin_44142296/article/details/96436951

‘${}’ 传列名,使用聚合函数

t_user有如下4 个字段:idnameageconsume_amt
如果需求是有时候是要age的平均数, 有的是consume_amt的平均数,那么可以把列表传到SQL中查询。如下:

mapper.xml

  <select id="getAvg" parameterType="java.lang.String" resultType="bigDecimal">
    select avg(${columnName})
    from t_user
    where ${columnName} &gt; 0
  </select>

DAO

BigDecimal getAvg(@Param("columnName") String columnName);

‘${}’ 传表名,切换表查询

线上环境通过积累,订单表数据越来越多,一般都会把历史数据迁移到历史表中,提高主表的效率。比如:订单表t_order、历史订单表t_order_his。但是有时候想查之前的历史数据,在SQL中就需要切换表名查询。

mapper.xml

  <select id="getOrderList" parameterType="java.lang.String" resultType="com.sakura.TOrder">
    select * from ${orderTable}
  </select>

DAO

List<TOrder> getOrderList(String orderTable);
注意事项:
  • 1、 聚合函数,如sum、avg等resultType为bigDecimal或者integer类型
  • 2、${}一般用于传输数据库的表名、字段名等,不能使用#{}
  • 3、mysql中的varchar可以进行sum,avg等操作,但是其中的汉字作为0,计算avg平均值的时候可能出现问题。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis,${}和#{}是用来替换SQL语句的参数的。它们的使用场合略有不同。 ${}是字符串替换,当MyBatis处理${}时,它会将SQL的${}替换为变量的值,传入的数据不会加两边加上单引号。这种情况适用于需要动态拼接SQL语句的场景,比如动态指定表名或列名。 #{}是预编译处理,当MyBatis处理#{}时,它会将SQL的#{}替换为?,然后调用PreparedStatement的set方法来赋值。传入的字符串会在值两边加上单引号,以确保安全性和正确性。这种情况适用于需要传入参数并进行预编译的场景,比如查询条件的参数。 总结起来,${}适用于动态拼接SQL语句的场景,而#{}适用于传入参数并进行预编译的场景。在使用时,我们需要根据具体的需求选择合适的方式来处理参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Mybatis $ 和 #千万不要乱用](https://blog.csdn.net/wyouwd1/article/details/126130428)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Mybatis系列:Mybatis $ 和 # 千万不要乱用!](https://blog.csdn.net/Mrs_chens/article/details/90403648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值