mybatis sum(参数) 列名作为参数的问题

2022-01-31

目录
  • sum(参数) 列名作为参数
    • 注意事项
  • mybatis注解sql sum(参数)传参写法

    sum(参数) 列名作为参数

    项目中有很多个字段,当字段为空的时候,求该列的平均值并赋值给该字段。如:

         
    id name age

    当我需要插入一条数据的时候,这条数据的age为空,那么需要先从数据库查询age的平均值,然后赋值给当前的数据。当字段很多的时候就需要列名作为参数查询了

    mapper.xml

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

    DAO

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

    注意事项

    1、 聚合函数,如sum、avg等resultType为bigDecimal或者integer类型

    2、${}一般用于传输数据库的表名、字段名等,不能使用#{}

    3、mysql中的varchar可以进行sum,avg等操作,但是其中的汉字作为0,计算avg平均值的时候可能出现问题。

    mybatis注解sql sum(参数)传参写法

    验证了很久sum()里面带参数方式 #{参数}一直不行日志显示参数已经传进 但就是加不上去 返回的始终是0

    后面换成$(参数)之后就行了

    @Select("select sum(${type}) from "+ TABLE_HOUR + " where date_format(`date`,'%Y-%m-%d') = #{date}")
    public int selectDay2(@Param("date") String date,@Param("type") String type);

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持北冥有鱼。

    《mybatis sum(参数) 列名作为参数的问题.doc》

    下载本文的Word格式文档,以方便收藏与打印。