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

目录
  • 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);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis中传递多个参数的4种方法总结

    前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. 下面给大家总结了以下几种多参数传递的方法. 方法1:顺序传参法 #{}里面的数字代表你传入参数的顺序. 这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错. 方法2:@Param注解传参法 #{}里面的名称对应的是注解 @Param括号里面修饰的名称. 这种方法在参数不多的情况还

  • Mybatis中如何使用sum对字段求和

    目录 使用sum对字段求和 避免Mybatis sum求和返回null 使用sum对字段求和 如下sql,为计算用户收益总和:   <select id="getTotalIncome" resultType="com.lws.test.modules.user.entity.UserIncomeEntity">     select sum(income) as totalIncome     from income_log     where uid

  • MyBatis的SUM映射问题及解决

    目录 SUM映射问题 原因 解决方式 sum 返回映射问题(sum报表统计接口返回) MyBatis sum 返回值映射 SUM映射问题 当我们根据类别进行统计,返回的数据类型为HashMap<String,Object>,获取数值类型,容易报 java.math.BigDecimal cannot be cast to java.lang.Integer 场景如下: // Mapper层 <select id="selectInfoByTest" resultTyp

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

    目录 sum(参数) 列名作为参数 注意事项 mybatis注解sql sum(参数)传参写法 sum(参数) 列名作为参数 项目中有很多个字段,当字段为空的时候,求该列的平均值并赋值给该字段.如:       id name age 当我需要插入一条数据的时候,这条数据的age为空,那么需要先从数据库查询age的平均值,然后赋值给当前的数据.当字段很多的时候就需要列名作为参数查询了 mapper.xml   <select id="getGtAvg" parameterType

  • mybatis打印SQL,并显示参数的实例

    在maven的pom.xml里面添加一下依赖: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.2.4.RELEASE</spring.version> <version.slf4j>1.7.6</version.slf4j> <version.logback>1.

  • 解析Mybatis连续传递多个参数的方法

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 下面给大家介绍Mybatis连续传递多个参数的方法.具体代码如下所示: // order by 排序 //<![CDATA[ 值 ]]> 过滤符号 //${}方式

  • 解决mybatis执行SQL语句部分参数返回NULL问题

    今天在写代码的时候发现一个问题:mybatis执行sql语句的时候返回bean的部分属性为null,在数据库中执行该sql语句能够正常返回,把相关代码反反复复翻了个遍,甚至都重启eclipse了,依旧没解决问题,后来网上搜了一下,还真有类似的问题. 闲话少说,直接说问题,该sql语句是自己写的,resultType直接用了该bean全名称,最终导致部分属性显示为null, 原来的写法: <select id="selectByArticle" parametertype=&quo

  • mybatis动态sql之Map参数的讲解

    mybatis 动态sql之Map参数 Mapper文件: <mapper namespace="com.cn.shoje.oa.modules.logistics.dao.PurcDao"> <select id="findAll" parameterType="Map" resultType="Purchase"> select * from prod_purchase where 1=1 <

  • mybatis查询语句揭秘之参数解析

    一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sql里面的参数进行一个匹配,最后获取结果.对于mybatis通常传参(这里忽略掉Rowbounds和ResultHandler两种类型)有几种方式. 1.javabean类型参数 2.非javabean类型参数 注意,本文是基于mybatis3.5.0版本进行分析. 1.参数的存储 2.对sql语句中参数的赋值 下面将围绕

  • mybatis mapper.xml 注释带参数的坑及解决

    目录 mybatis mapper.xml 注释带参数的坑 mybatis的xml中注释需谨慎 报错内容 小结一下 mybatis mapper.xml 注释带参数的坑 最近做一个很简单的统计项目,统计的逻辑产品一直改版,为了便于之后产品返回的时候快速的切换回老版本的逻辑,就给之前的sql注释了直接在下面写了新的sql,注释的时候一般我都习惯性的选中之后Ctrl+/利用编辑器自带的自动注释功能,这个时候编辑器是分两种情况的:情况一是你之前老的sql没有类似<where>这样带特殊尖括号的语句,

  • mybatis调用mysql存储过程(返回参数,单结果集,多结果集)

    目录 一.接收一个返回值 注意事项: 存储过程主要分成三类: 二.接收list结果集 三.返回多个结果集 四.第二种配置也可以 一.接收一个返回值 使用Map接收返回参数,output参数放在传入的param中 创建表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`

  • 浅析C/C++中的可变参数与默认参数

    千万要注意,C不支持默认参数 C/C++支持可变参数个数的函数定义,这一点与C/C++语言函数参数调用时入栈顺序有关,首先引用其他网友的一段文字,来描述函数调用,及参数入栈: ------------ 引用开始 ------------ C支持可变参数的函数,这里的意思是C支持函数带有可变数量的参数,最常见的例子就是我们十分熟悉的printf()系列函数.我们还知道在函数调用时参数是自右向左压栈的.如果可变参数函数的一般形式是:    f(p1, p2, p3, -)那么参数进栈(以及出栈)的顺

随机推荐