使用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 ...
随机推荐
- 如何确定dbgrid选择的是记录而不是分组
with cxgrdbtblvwGrid1DBTableView1.Controller do if FocusedRecord is TcxGridDataRow then begin i := c ...
- sql连接处理
序言 数据存储是一个很重要的话题,小到C里面的struct,到os的一个个数据表,大到一个个数据库软件乃至单纯提供数据存储和访问服务的集群,提供数据的快速访问.持久化维护.崩坏数据的恢复,数据的加密维 ...
- kettle使用MD5加密增量获取接口数据
kettle使用MD5加密增量获取接口数据 场景介绍: 使用JavaScript组件进行MD5加密得到Http header,调用API接口增量获取接口数据,使用json input组件解析数据入库 ...
- fiddler抓包配置
一.fiddler配置 打开tools-options 1.设置general,勾选对应选项 2.设置HTTPS,勾选Decrypt HTTPS traffic时,首次使用如果没有下载过fiddler ...
- linux系统权限管理
一.认识linux系统的文件权限 首先随便在一个目录下使用ls -l(可简写为ll)指令,就会把该目录下所有的文件和目录的权限显示出来,例如,在根目录下使用ls -l: (深蓝字:目录,白字:文件,浅 ...
- AD系列:Windows Server 2025 搭建AD域控和初始化
简介 本教程主要内容为使用Windows Server 2025 部署Active Directory (ADDS\域控制器)服务. 所有操作尽量使用PowerShell,可提高部署效率和自动化操作. ...
- windows11 安装WSL2详细过程
一.什么是 WSL 2 时间来到 2017 年,事情正在起变化.微软正式发布了「适用于 Linux 的 Windows 子系统」,即人们熟知的 Windows Subsystem for Linux, ...
- 聊聊 ruoyi-vue ,ruoyi-vue-plus ,ruoyi-vue-pro 谁才是真正的王者
笔者在知乎.Github 上搜索不少快速开发框架 ,很多的话题都绕不开若依 RuoYi . 开源世界 RuoYi 单体框架有三个不同的项目,分别是:ruoyi-vue .ruoyi-vue-plus ...
- Ubuntu安装部署Zabbix网络监控平台和设备配置添加
概述 Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持. Zabbix 是一个企业级的开源分布式监控解决方案. Zabbix 是一款监控众多参数的 ...
- rancher 卸载后重装报错
报错信息 kubectl create namespace cattle-system Error from server (InternalError): Internal error occurr ...