使用MyBatis遇到的问题及解决方法(一)(持续更新)
这是一个出错的代码
1 public interface OrderInfoManageMapper {
2 List<GetOrderInfoManageListReq> selectAllOrder();
3 void modifyDelivery(int id);
4 void removeOrder(int id);
5 List<GetOrderInfoManageListReq> selectOrderById(@Param("id") Integer id);
6 }
一、报错:
1 There is no getter for property named 'id' in 'class java.lang.Integer'
检查mapper.xml文件,没错,如下:
1 <select id="selectOrderById" parameterType="java.lang.Integer" resultMap="BaseResultMap">
2 SELECT DISTINCT
3 order_info.id,
4 user_info.user_name,
5 order_info.order_status,
6 order_info.pay_type,
7 order_info.total_price,
8 ship_address.ship_user_name,
9 ship_address.ship_user_mobile,
10 ship_address.ship_address,
11 order_goods.goods_desc,
12 order_goods.goods_sku,
13 order_goods.goods_icon,
14 order_goods.goods_price
15 FROM
16 order_info,
17 user_info,
18 ship_address,
19 order_goods
20 WHERE
21 order_info.id = order_goods.order_id
22 AND order_info.user_id = user_info.id
23 AND order_info.ship_id = ship_address.id
24 <if test="id!= null and id!= '' ">
25 AND order_info.id = #{id}
26 </if>
27 </select>
检查mapper接口,如下:
1 public interface OrderInfoManageMapper {
2 List<GetOrderInfoManageListReq> selectAllOrder();
3 void modifyDelivery(int id);
4 void removeOrder(int id);
5 List<GetOrderInfoManageListReq> selectOrderById(Integer id);
6 }
看似没有问题,但是id的话,需要这么写(看最后一行):
1 public interface OrderInfoManageMapper {
2 List<GetOrderInfoManageListReq> selectAllOrder();
3 void modifyDelivery(int id);
4 void removeOrder(int id);
5 List<GetOrderInfoManageListReq> selectOrderById(@Param("id") Integer id);
6 }
二、sql没问题却报错:
java.sql.SQLException: 无效的列类型: 1111
原因是在mybatis中
1 SELECT
2 C_NAME1,
3 C_NAME2
4 FROM
5 MY_TABLE
6 WHERE
7 1=1
9 AND ID IN ({#param})
param是java传来的字符串 'id1','id2','id3'
此时就会报这个错误,因为使用in条件时不能用#,要使用$,如
1 SELECT
2 C_NAME1,
3 C_NAME2
4 FROM
5 MY_TABLE
6 WHERE
7 1=1
9 AND ID IN ({$param})
三、java想mybatis中传入‘a’,'b','c',放在in中
可能会这么写mybatis:
1 SELECT * FROM TABLE_NAME
2 WHERE 1=1
3 <if para!= null && para!="" >
4 AND PARS in (#{para})
5 </if>
java传过来的para为
1 String para = "'a','x','d','g'";
此时预期效果为
1 SELECT * FROM TABLE_NAME
2 WHERE 1=1
3 AND PARS in ('a','x','d','g')
但是判断会通过,值不会传入,会出现:
1 SELECT * FROM TABLE_NAME
2 WHERE 1=1
3 AND PARS in ()
将#换成$才可以。虽然#很安全
1 SELECT * FROM TABLE_NAME
2 WHERE 1=1
3 <if para!=null && para!="" >
4 AND PARS in (${para})
5 </if>
使用MyBatis遇到的问题及解决方法(一)(持续更新)的更多相关文章
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)
最近一券商那边扫描反馈了下面几个非业务型安全漏洞,要求解决,如下: XSS 自己写个脚本response的时候对特殊字符进行了处理,或者网上搜下一堆(不要忘了回车.换行). HTML form wit ...
- tensorflow与神经网络中遇到的问题与解决方法【持续更新】
1.如何在全连接层拼接特征? 有一种方法是有两个input,一个input通过网络最终达到全连接层,另一个input直接接一个全连接网络,神经元数是特征数,这两个可以进行一个concat. 当然了也 ...
- 使用Python过程中遇到的一些坑及其解决方法(持续更新)
1.列表不能直接赋值 nums1 = nums2 x nums1[:] = nums2 正确 2.返回列表某一元素的值可以使用index函数 aList = [123, 'xyz', 'runoob' ...
- ASP.NET网站运行常见错误以及解决方法(持续更新)
一.A potentially dangerous Request.Form value was detected from the client 用户在页面上提交表单到服务器时,服务器会检测到一些潜 ...
- Python语言上机题实现方法(持续更新...)
Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...
- MyBatis保存完整日期的解决方法
在用mybatis时,对mysql数据库是datatime字段添加值是,发现添加成功后查看数据库字段值是,只有年月日有值,时分秒则为0来表示的,更改为java.sql.date,time等也不行,如果 ...
- 【推荐】MySQL Cluster报错及解决方法(不断更新中)
排查问题技巧: MySQL Cluster 自带了一个错误代码的查看的小程序.通过这个小东西我们可以方便的定位问题的原因. 这个程序就是 perror 在MYSQL安装目录的bin下面. 如报错:ER ...
- 自己遇到的Android虚拟机出现的错误及解决方法【不断更新】
2012.11.9 第一个: [2012-11-09 13:15:14 - Tesa] Android Launch! [2012-11-09 13:15:14 - Tesa] The connect ...
- viusal studio 调试错误及解决方法(长期更新记录)
1.为了看运行结果加了 system("pause"):结果导致图像显示不出来,数据为空.主要是因为system pause后停止计算.图像显示不出来.应该改成:waitKey(0 ...
随机推荐
- dify升级,PostgreSQL数据库字段更新处理
一.概述 dify运行在容器中,PostgreSQL用的是阿里云,已经运行了很长一段时间.某些表的数据量很大,比如workflowruns表,就有100GB.这个主要是,详细记录了工作流的执行情况,包 ...
- 分享 3 款基于 .NET 开源且免费的远程桌面工具
前言 今天大姚给大家分享 3 款基于 .NET 开源.免费.功能强大的远程桌面工具,希望可以给大家的远程工作和学习带来便利. 1Remote 1Remote是一款基于 .NET 开源(GPL-3.0 ...
- shell处理字符串
概念 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号. 单引号声明字符串 单引号里的任何字符都会原样输出, ...
- jmeter结果断言的几种方法
这篇文章里,我们已经知道了怎样实用json断言(https://www.cnblogs.com/becks/p/14951725.html) 接下来还有几种断言,一一介绍 一.响应断言,这种断言的逻辑 ...
- 探秘Transformer系列之(30)--- 投机解码
探秘Transformer系列之(30)--- 投机解码 目录 探秘Transformer系列之(30)--- 投机解码 0x00 概述 0x01 背景 1.1 问题 1.2 自回归解码 0x02 定 ...
- EFCore-CodeFirst-Mysql 创建ConsoleApplication 程序
1.创建一个ConsoleApplication,程序集选择.NET5.:添加对应的依赖 2.添加对应的类Student.Course.Classes using System; using Syst ...
- Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题
Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题 背景 在使用 Dify 框架进行开发时,遇到了两个主要的技术挑战: 代码节点连接到 PGSQL(Pos ...
- 79.8K star!这款开源自动化神器让技术团队效率飙升,400+集成玩转AI工作流!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "n8n 是技术团队自动化领域的瑞士军刀,既能享受可视化搭建的便捷,又能随时插入代 ...
- 内网私仓全流程搭建记录(一)-Nexus3环境搭建
1.部署 1)在https://help.sonatype.com/repomanager3/product-information/download中下载对应环境及版本,此处要求3以上版本,本次以& ...
- Vite 3 来了!新增功能 + 如何迁移
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...