关于实现mybatis order by 排序传递参数实现 问题记录
一 问题场景:本人项目纯纯的后端系统 并且项目前端采用纯纯的原生js 实现
1)表格 通过查询列表数据放入到域中 前段采用 for循环的方式实现遍历生成列表
2)分页实现本人是公司内部自定义实现的分页没有采用任何外部框架 分页实现是公司内部自定义封装的
要求:要点击列表表头字段实现按照表头信息排序
解决思路:
由于我的列表是由多个表中数据关联查询出来的所以要实现根据不同的列头实现排序 那么久要将查询结果在包装成一个表 在通过select * from 结果表 order by 排序字段 方式实现
涉及问题:传递排序列 头 对应的表字段 同时传递 排序方式 是asc 还是desc 两个参数
二 解决
1)有问题了??? mybatis 传参 大家都会 常采用的方式 #{} 方式接收参数占位 这样可以防止sql注入 #{}实现预编译
我同样在mybatis mapper.xml 文件中通过 select * from 表 order by #{字段} #{排序方式}
查看打印日志:完全正确 并且将日志信息拷贝出来到数据库执行打印sql 没有问题
然而。。。。。在通过断点却发现一直查询结果并没有实现排序??????????????
问题:mybatis #{} 在接收参数的时候会给接收的参数 添加双引号 那么上面的sql 实现就是
select * from table_name order by "fullName" "desc"
这种形式的日志是无法发现的 同时在编译过程以及运行都没有报错但是 将"fullName" 以及 “desc” 解析时候“fullName” 并没有当表中字段解析 “desc” 也认为是一个字符串 没有识别说是数据库关键字 导致查询没有异常 但是不能正确返回查询结果
2)解决方案
将#{} 替换成${}
select * from table_name order by ${}${} 但是${} 无法防止sql注入
关于实现mybatis order by 排序传递参数实现 问题记录的更多相关文章
- mybatis order by绑定的参数
<select id = "queryByStartWithOrder" resultType="org.seckill.entity.SuccessKilled& ...
- SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。
top关键字:写在select后面 字段的前面 比如你要显示查询的前5条记录,如下所示: select top 5 * from Student 一般情况下,top是和order by连用的 orde ...
- 关于Mybatis的@Param注解 及 mybatis Mapper中各种传递参数的方法
原文:https://blog.csdn.net/mrqiang9001/article/details/79520436 关于Mybatis的@Param注解 Mybatis 作为一个轻量级的数 ...
- mybatis框架中 #和$传递参数的区别 和注意
#{}: 1. 是预编译 2. 编译成占位符 3. 可以防止sql注入 4. 自动判断数据类型 5. 一个参数时,可以使用任意参数名称进行接收 ${}: 1. 非预编译 2. sql的直 ...
- Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录
背景 :在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnectio ...
- Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录(转)
https://blog.csdn.net/uotail/article/details/84673347
- mybatis 传递参数的方法总结
有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(String name,String area); 可以在xml ...
- MyBatis(二):Select语句传递参数的集中方案
从别人说的方案中看出,传递参数方案还挺多,不如自己整理下,以便以后使用过程中有个笔记回忆录. 1.传递一个参数的用法: 配置文件 <select id="getById" r ...
- MyBatis传递参数
MyBatis传递参数 一.使用 map 接口传递参数 在 MyBatis 中允许 map 接口通过键值对传递多个参数,把接口方法定义为 : public List<Role> findR ...
随机推荐
- 西汉姆VS利物浦,铁锤『拳』出击,打回原『菱』形
一.铁锤,还是铁桶? 铁锤帮西汉姆今晚摆出4-2-3-1对阵红军利物浦的4-3-3 ,阿勒戴斯曾在主场2-1战胜赫尔城时被球迷嘘,嫌他的足球太过丑陋『2010年的时候贝尼特斯也曾经诟病阿勒戴斯带队 ...
- Arcgis for Android 空间数据WKT与JSON描述
点线面数据标准格式 一. 点 WKT: POINT(-118.4 -45.2) JSON: { "x": -118.4, "y": -45.2, "s ...
- 初识prufer序列
前言 \(prufer\)序列应该是一个比较实用的东西. 据\(hl666\)大佬说,一切与度数有关的树上计数问题,都可以用它以及它的性质来解决. 而听说\(ZJOI\)最近特别喜欢出计数题,所以有必 ...
- LA 4987 背包
题意: 有n个施工队,给定他们的位置,有m个防空洞,给定位置,求将施工队放到m个防空洞里面,最少的总距离? n<=4000 分析: dp[i][j] 前 i 个施工队,放到前 j 个防空洞里面的 ...
- HTTP请求方式中8种请求方法(简单介绍)
简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的.当我们没有指定端口访问时,浏览器会 ...
- Android学习笔记_35_PopupWindow泡泡窗口的实现及GridView应用
1.PopupWindow是一个可以显示在当前Activity之上的浮动容器,PopupWindow弹出的位置是能够改变的,按照有无偏移量,可以分为无偏移和有便宜两种:按照参照对象的不同又可以分为两种 ...
- centos7下javac:未找到命令的问题
在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java 会提示未找到指令,但用java -verison测试环境变量 ...
- Python使用dict和set
dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也成为map,使用键-值(key-value)存储,具有极快的查找速度. 假设要根据同学的名字查找对应的 ...
- 学习MySql和MongoDB笔记
首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型. 主要的数据库:SQL Server,Oracle,Mysql,Postgr ...
- 数据库——MySQL——完整性约束
约束,就是用来保证数据完整性和一致性的. 常见的约束分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NO ...