mybatis group by substr函数传参报错的解决
作者:罗罗诺亚F 发布时间:2022-09-10 03:44:34
标签:mybatis,group,substr
mybatis group by substr传参报错
报异常
### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表达式
SELECT
SUBSTR( region_code, 1,#{ queryMap.groupCodeLength, jdbcType = INTEGER } ) AS "region_code",
count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast"
FROM
t_pub_sentiment
WHERE
1 = 1
GROUP BY
SUBSTR(region_code,1,#{ queryMap.groupCodeLength,jdbcType = INTEGER })
更改后:
SELECT
SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } ) AS "region_code",
count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast"
FROM
t_pub_sentiment
WHERE
1 = 1
GROUP BY
SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } )
原因
#{} 和 ${} 在预编译中的处理是不一样的。#{} 在预处理时,会把参数部分用一个占位符 ? 代替。而 ${} 则只是简单的字符串替换。
${}有sql注入的风险,需谨慎使用。
使用group by 分组查询返回为null
我在使用mybatis进行分组查询时数据库有数据,但是mybatis返回为null,使用mybatis版本为3.4.1
解决方法
在resultMap的result标签中添加 property属性
如下:
<resultMap id="deptMap" type="java.util.Map">
<result column="id" property="id"/>
<result column="dept_name" property="deptname"/>
<result column="count(1)" property="count"/>
</resultMap>
<select id="getDeptByIdStep" resultMap="deptMap">
select id,dept_name,count(1) from tbl_dept where dept_id=#{id} group by id;
</select>
我在第一次使用时没有添加property导致mybatis返回null,添加后就可以正常返回。
dao层代码
public List<Map> getDeptByIdStep(Integer id);
来源:https://blog.csdn.net/Tracycater/article/details/84674359


猜你喜欢
- 目录一、简介二、环境介绍三、主题1. ThemeData2. main.dart or MaterialApp四、全局配置1. Global
- MyBatis-Plus不使用数据库默认值的问题有时候我们在设计数据表时希望某些字段使用默认值,比如create_time、和update_
- 在用C++来开发Windows程序时,经常看到下面的判断情况:HRESULT hr = ::RegCreateKeyEx(hk, szKey
- 一、Json简介Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Jso
- 如果我们遇到把excel表格中的数据导入到数据库,首先我们要做的是:将excel中的数据先读取出来。因此,今天就给大家分享一个读取Excel
- struct OutputFilestruct OutputFile 是单个输出文件的管理器。之前在 parse_opt
- 代码如下:public class TempTest { public static void main(String[] args) {
- 本文实例为大家分享了Unity实现俄罗斯方块第一部分,供大家参考,具体内容如下准备工作1、新建一个2D项目,新建成功以后设置相机的一些参数2
- Java虚拟机栈1. 定义栈:线程运行时需要的内存空间,一个栈存在多个栈帧。栈具有先入后出,后入先出的特点。栈帧:每个方法运行时需要的内存(
- 在本系列文章中,我们将使用深度神经网络(DNN)来执行硬币识别。具体来说,我们将训练一个DNN识别图像中的硬币。在本文中,我们将描述一个Op
- 废话不多说了直接给大家贴代码了,具体代码如下所示:<?xml version="1.0" encoding=&qu
- 本文实例为大家分享了java实现上传网络图片到微信临时素材的具体代码,供大家参考,具体内容如下package org.afuos.playc
- 升级年初了,我们打算升级下apg,这样之后就拥抱下jetpack compose了!!想用comopse有两个必选项agp7.0和kotli
- 说到下拉刷新控件,网上版本有很多,很多软件也都有下拉刷新功能。有一个叫XListView的,我看别人用过,没看过是咋实现的,看这名字估计是继
- 本文实例为大家分享了java实现马踏棋盘的具体代码,供大家参考,具体内容如下马踏棋盘算法介绍8X8棋盘,马走日字,要求每个方格只进入一次,走
- 本文实例为大家分享了Java实现寻找迷宫出路的具体代码,供大家参考,具体内容如下项目名称寻找迷宫出路项目描述给定一个自定义迷宫,0表示能通过
- 本文实例讲述了C#实现为类和函数代码自动添加版权注释信息的方法,分享给大家供大家参考之用。具体方法如下:以web项目为例:一:给类加注释1.
- 本文实例为大家分享了Android扫描和生成二维码的具体代码,供大家参考,具体内容如下MainActivity.javapublic cla
- 本文实例为大家分享了PopupWindow实现自定义overflow的具体代码,供大家参考,具体内容如下当Action Bar的Action
- 一:软键盘自动弹出。private EditText top_middle;//输入框//-------------------------