一    问题场景:本人项目纯纯的后端系统  并且项目前端采用纯纯的原生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. POJ-2976 Dropping tests---二分最大化平均值

    题目链接: https://cn.vjudge.net/problem/POJ-2976 题目大意: 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大 解题思路: ...

  2. Android(java)学习笔记26:File类的使用

    1. File类的使用  package cn.itcast_01; import java.io.File; /* * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式. * 而Java就提供 ...

  3. 【转】Android Activity原理以及其子类描述,androidactivity

        Android Activity原理以及其子类描述,androidactivity 简介 Activity是Android应用程序组件,实现一个用户交互窗口,我们可以实现布局填充屏幕,也可以实 ...

  4. python-实现登录接口

    简介:1.在本地创建两个文件,一个文件的内容是存储用户名和密码,另一个的内容是存储锁定的用户          2.登录次数限制为三次,当密码错误三次后,该账号锁定,无法再次登录 #coding=ut ...

  5. (转)超级实用且不花哨的js代码大全

    事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  event.srcE ...

  6. Android学习笔记_25_多媒体之在线播放器

    一.布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...

  7. python-time、datetimme模块

    time模块 1.time.time():返回当前时间的时间戳. 打印时间戳: >>> import time >>> time.time() 1530329387 ...

  8. C#结构体和字节数组的转换函数

    在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到.   一般都会采用结构来表示字节数组.但结构 ...

  9. 课时60.CSS的固定格式(掌握)

    CSS就是用来设置样式的,美化界面的 如何验证? 打开一个京东首页 删除掉css样式 发现页面变得非常难看 由此我们验证了一个说法,css就是用来美化界面的 1.格式: <style type= ...

  10. 初试Taro

    今天有空在github上发现一个好东西--Taro. 京东的Team打造的多端开发解决方案.·一套代码编译成可以在多端运行代码,(小程序,RN,H5)看到这里我就不淡定了. 这个意思就是,你照常写你的 ...