记一次拼接Sql的问题
2021/7/8 2:05:42
本文主要是介绍记一次拼接Sql的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
<select id="queryList" parameterType="java.lang.String" resultType="com.hengtn.evaluation.dto.response.EvaluationRecordResponseDTO"> SELECT r.id AS id, r.create_time AS createTime, r.city_name AS cityName, r.star_level AS starLevel, r.status AS status, r.user_phone AS userPhone, r.user_id AS userId, GROUP_CONCAT(o.worker_name) AS workerName, o.order_number AS orderNumber, r.label AS label, r.content_text AS contentText FROM evaluation_record r JOIN evaluation_record_order o ON r.id = o.record_id WHERE 1=1 ${param} GROUP BY id ORDER BY FIELD( 'status', 'PENDING', 'PROCESSED', 'NOPENDING' ), r.star_level, r.create_time </select>
如上xml所示,如果用#{param}则会报sql语句错误,使用${}则能成功运行
原因为,#{param}会在参数的基础上在做一层处理,就会导致传入拼接好的字符串param发生改变,sql解析发生错误.
这也是#{}有效能防止sql注入的原因
另外, GROUP_CONCAT(o.worker_name) AS workerName 能合并多个因为分组而重合的列
GROUP BY id,适合处理一对多的情况
ORDER BY FIELD( 'status', 'PENDING', 'PROCESSED', 'NOPENDING' ) 可以根据列对应的值排序,OREDER BY 后的多个排序条件用逗号隔开。
这篇关于记一次拼接Sql的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解