这是一个出错的代码

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遇到的问题及解决方法(一)(持续更新)的更多相关文章

  1. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  2. web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)

    最近一券商那边扫描反馈了下面几个非业务型安全漏洞,要求解决,如下: XSS 自己写个脚本response的时候对特殊字符进行了处理,或者网上搜下一堆(不要忘了回车.换行). HTML form wit ...

  3. tensorflow与神经网络中遇到的问题与解决方法【持续更新】

    1.如何在全连接层拼接特征? 有一种方法是有两个input,一个input通过网络最终达到全连接层,另一个input直接接一个全连接网络,神经元数是特征数,这两个可以进行一个concat.  当然了也 ...

  4. 使用Python过程中遇到的一些坑及其解决方法(持续更新)

    1.列表不能直接赋值 nums1 = nums2 x nums1[:] = nums2 正确 2.返回列表某一元素的值可以使用index函数 aList = [123, 'xyz', 'runoob' ...

  5. ASP.NET网站运行常见错误以及解决方法(持续更新)

    一.A potentially dangerous Request.Form value was detected from the client 用户在页面上提交表单到服务器时,服务器会检测到一些潜 ...

  6. Python语言上机题实现方法(持续更新...)

    Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...

  7. MyBatis保存完整日期的解决方法

    在用mybatis时,对mysql数据库是datatime字段添加值是,发现添加成功后查看数据库字段值是,只有年月日有值,时分秒则为0来表示的,更改为java.sql.date,time等也不行,如果 ...

  8. 【推荐】MySQL Cluster报错及解决方法(不断更新中)

    排查问题技巧: MySQL Cluster 自带了一个错误代码的查看的小程序.通过这个小东西我们可以方便的定位问题的原因. 这个程序就是 perror 在MYSQL安装目录的bin下面. 如报错:ER ...

  9. 自己遇到的Android虚拟机出现的错误及解决方法【不断更新】

    2012.11.9 第一个: [2012-11-09 13:15:14 - Tesa] Android Launch! [2012-11-09 13:15:14 - Tesa] The connect ...

  10. viusal studio 调试错误及解决方法(长期更新记录)

    1.为了看运行结果加了 system("pause"):结果导致图像显示不出来,数据为空.主要是因为system pause后停止计算.图像显示不出来.应该改成:waitKey(0 ...

随机推荐

  1. unigui的ServerModule的重要属性【8】

    ServerModule是unigui的重要模块. uniGUI 服务器的内部结构. 每个 uniGUI 服务器都有一个ServerModule的副本, 每台服务器创建一次, 同时根据用户活动动态创建 ...

  2. Linux内存管理神器:smem工具

    大家好,我是良许. 今天给大家分享一款 Linux 系统里的内存管理神器:smem . smem 是Linux系统上的一款可以生成多种内存耗用报告的命令行工具.与现有工具不一样的是 smem 可以报告 ...

  3. 一文速通Python并行计算:06 Python多线程编程-基于队列进行通信

    一文速通 Python 并行计算:06 Python 多线程编程-基于队列进行通信 摘要: 队列是一种线性数据结构,支持先进先出(FIFO)操作,常用于解耦生产者和消费者.慢速生产-快速消费场景中,队 ...

  4. springboot集成docker实现自动化构建镜像说明

    springboot集成docker实现自动化构建镜像说明 文档说明 该文档仅包括通过配置springboot.docker.jenkins.git.appollo等实现持续构建,持续发布的功能,不包 ...

  5. lua随写

    --local util={}--function util.Split(str, sep)-- local sep, fields = sep or ":", {}-- loca ...

  6. 基于注解的 AOP 配置

    第一步:在 spring 配置文件中开启 spring 对注解 AOP 的支持 <!-- 开启 spring 对注解 AOP 的支持 --> <aop:aspectj-autopro ...

  7. SpringBoot3整合SpringSecurity6(一)快速入门

    大家好,我是晓凡. 写在前面 不知道小伙伴们在学SpringSecurity过程中有没有和我一样的经历和烦恼. ①看完一篇文章或者一个教程,感觉学会了.但是一到实际项目中就不知道怎么用: ②被Spri ...

  8. Golang服务可观测和思路分享

    省流 中医四诊"望闻问切"与程序诊断有异曲同工之妙.在Golang问题排查中,我们需要建立系统化的诊断思维:通过观察表象(望).收集信息(闻).追溯根源(问).精准施治(切)四个维 ...

  9. 在 MySQL 中存储金额数据,应该使用什么数据类型?

    在MySQL中存储金额数据时,最推荐使用 DECIMAL 类型(有时也叫做 NUMERIC).DECIMAL 类型是一种精确的数字类型,适合存储具有小数位的金额数据,因为它不会像浮点数类型那样受到精度 ...

  10. 2025dsfz集训Day6: 数论

    DAY6: 数论 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] 特别感谢 此次课的主讲 - Kwling 快速幂 快速幂是针对快速 ...