一    问题场景:本人项目纯纯的后端系统  并且项目前端采用纯纯的原生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 排序传递参数实现 问题记录的更多相关文章

  1. mybatis order by绑定的参数

    <select id = "queryByStartWithOrder" resultType="org.seckill.entity.SuccessKilled& ...

  2. SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。

    top关键字:写在select后面 字段的前面 比如你要显示查询的前5条记录,如下所示: select top 5 * from Student 一般情况下,top是和order by连用的 orde ...

  3. 关于Mybatis的@Param注解 及 mybatis Mapper中各种传递参数的方法

    原文:https://blog.csdn.net/mrqiang9001/article/details/79520436 关于Mybatis的@Param注解   Mybatis 作为一个轻量级的数 ...

  4. mybatis框架中 #和$传递参数的区别 和注意

    #{}: 1.  是预编译 2.  编译成占位符 3.  可以防止sql注入 4.  自动判断数据类型 5.  一个参数时,可以使用任意参数名称进行接收 ${}: 1.  非预编译 2.  sql的直 ...

  5. Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录

    背景 :在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnectio ...

  6. Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录(转)

    https://blog.csdn.net/uotail/article/details/84673347

  7. mybatis 传递参数的方法总结

    有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(String name,String area); 可以在xml ...

  8. MyBatis(二):Select语句传递参数的集中方案

    从别人说的方案中看出,传递参数方案还挺多,不如自己整理下,以便以后使用过程中有个笔记回忆录. 1.传递一个参数的用法: 配置文件 <select id="getById" r ...

  9. MyBatis传递参数

    MyBatis传递参数 一.使用 map 接口传递参数 在 MyBatis 中允许 map 接口通过键值对传递多个参数,把接口方法定义为 : public List<Role> findR ...

随机推荐

  1. 用户级线程demo

    http://blog.csdn.net/dabing69221/article/details/17426953 前言: 前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案 ...

  2. 【甘道夫】NN HA 对于 Client 透明的实验

    之前转载过一篇[伊利丹]写的NN HA实验记录.该博客描写叙述了主备NN透明切换的过程,也就是说,当主NN挂掉后,自己主动将备NN切换为主NN了,Hadoop集群正常执行. 今天我继续做了一个实验.目 ...

  3. CF578C Weakness and Poorness

    嘟嘟嘟 题面:给一个序列中的,每一个数都减去一个实数x,使得到的新序列的max(最大连续和,|最小连续和|)最小.(|ai| <= 10000) 感性的想想,会发现最大连续和随x变大而变小,最小 ...

  4. POJ 3185 The Water Bowls 【一维开关问题 高斯消元】

    任意门:http://poj.org/problem?id=3185 The Water Bowls Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  5. [19/03/15-星期五] 常用类_String类&StringBuilder和StringBuffer类

    一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢?  指的是对象内部的成员变量的值无法再改变.Str ...

  6. Joker Xue

    大家好,我是LJ,来自于美丽的魏源故乡——隆回,从小被爸妈带到大,但是现在,我脱离了爸妈的管理,来到了远离家乡的长沙,大学生活当然美好,但是我们在做出每一个决定的同时,可能很少有他们的建议了,不过没有 ...

  7. TridentState分析

    public class TridentState { TridentTopology _topology; Node _node; protected TridentState(TridentTop ...

  8. 我和我的广告前端代码(四):后台系统中,初尝vue、vue-cli

    有一段都在重构之前文章<我和我的广告前端代码(三):一次重来的机会,必要的技术选型>中提到的广告前台展示项目,原有的基于页面的请求,改成了单广告位请求在这个过程中经历了好几次架构变更以及项 ...

  9. 简析--UUID

    内容转载自:http://www.cnblogs.com/java-class/p/4727698.html 阅读目录 1.UUID简介 2.UUID组成 3.UUID实战演练 1.UUID 简介 U ...

  10. [oracle]分区表学习

    (一)什么是分区 所谓分区,就是将一张巨型表或巨型索引分成若干个独立的组成部分进行存储和管理,每一个相对小的,可独立管理的部分,称为分区. (二)分区的优势 提高数据可管理性.对表进行分区,数据的加载 ...