返回顶部
首页 > 资讯 > 后端开发 > Python >jOOQ串联字符串拒绝使用的原因实例
  • 564
分享到

jOOQ串联字符串拒绝使用的原因实例

jOOQ串联字符串jOOQ字符串 2022-11-13 13:11:30 564人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

jOOQ开箱即支持大量的sql语法。因此,大多数用户在使用JDBC编写动态SQL时,不会像以前那样采用字符串连接的方式。 但时不时地,jOOQ不支持某个厂商的特定功能(是的,它发生

jOOQ开箱即支持大量的sql语法。因此,大多数用户在使用JDBC编写动态SQL时,不会像以前那样采用字符串连接的方式。 但时不时地,jOOQ不支持某个厂商的特定功能(是的,它发生了)。在这种情况下,jOOQ支持各种"普通SQL "api,它可以用来构造几乎所有类型的jOOQ API元素,比如:

但是,有时候,你需要动态地传递一个参数给这样的函数,比如说另一个列的表达式。而你想以一种类型安全的方式做到这一点,因为jOOQ代码生成器已经产生了类型安全的列表达式。所以你可能会倾向于串联,尽管如此:

field("cool_function(1, " + MY_TABLE.MY_COLUMN + ", 3)");

千万不要这样做!因为这些原因:

  • 尽管jOOQ在一般情况下是非常安全的SQL注入,但事实上你还是可以在这里引入一个普通的SQL注入漏洞。在这种情况下不会,因为该列是生成的代码,但也许,你会把用户的输入连接起来。请注意,为了增加SQL注入保护,可以通过添加我们的PlainSQL检查器,使用检查器框架Google ErrorProne,在全局范围内防止普通SQL的使用,只在需要时允许本地使用。
  • 和以往的字符串连接一样,你很容易出现SQL语法错误。在这种情况下,生成的SQL不针对任何方言,因为MY_TABLE.MY_COLUMN.toString() ,没有任何上下文信息,如SQLDialect 和所有其他配置标志。

相反,使用jOOQ的纯SQL模板小语言,它允许模板占位符,如{0}, {1}, {2} :

field("cool_function(1, {0}, 3)", MY_TABLE.MY_COLUMN);

如果你经常这么做,你可以在你自己的迷你DSL中考虑这个调用:

public static Field<String> coolFunction(Field<?> field) {
    field("cool_function(1, {0}, 3)", field);
}

而现在,像这样调用:

coolFunction(MY_TABLE.MY_COLUMN)

作为一个经验法则:使用jOOQ,你应该永远不需要借助于SQL字符串连接,你可以始终使用以下两种方法:

  • 类型安全的jOOQ DSL API
  • 普通的SQL模板API(最好是把这种用法隐藏在你自己的类型安全DSL API后面)

以上就是jOOQ串联字符串拒绝使用的原因实例的详细内容,更多关于jOOQ串联字符串的资料请关注编程网其它相关文章!

--结束END--

本文标题: jOOQ串联字符串拒绝使用的原因实例

本文链接: https://lsjlt.com/news/171413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • jOOQ串联字符串拒绝使用的原因实例
    jOOQ开箱即支持大量的SQL语法。因此,大多数用户在使用JDBC编写动态SQL时,不会像以前那样采用字符串连接的方式。 但时不时地,jOOQ不支持某个厂商的特定功能(是的,它发生...
    99+
    2022-11-13
    jOOQ串联字符串 jOOQ字符串
  • python中字符串使用实例分析
    这篇“python中字符串使用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中字符串使用实例分析”文章吧...
    99+
    2023-07-02
  • c#字符串插入html标签的原因
    这篇文章主要介绍“c#字符串插入html标签的原因”,在日常操作中,相信很多人在c#字符串插入html标签的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c#字符串插入html标签的原因”的疑惑有所帮助!...
    99+
    2023-06-18
  • MySQL 字符串拆分实例(无分隔符的字符串截取)
    无分隔符的字符串截取 题目要求 数据库中字段值: 实现效果:需要将一行数据变成多行 实现的sql SELECT LEFT(SUBSTRING('P1111',help_topic_id...
    99+
    2022-05-30
    MySQL 字符串拆分 无分隔符 字符串截取
  • python常用字符串的使用案例
    小编给大家分享一下python常用字符串的使用案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python常用字符串我们在学习python的时候会有一些常用的字...
    99+
    2023-06-14
  • JavaScript模板字符串用法实例
    目录1. 什么是模板字符串 ?2. 模板字符串的用法3. 模板字符串标签函数补充:JS模板字符串拼接总结1. 什么是模板字符串 ? 模板字符串...
    99+
    2022-11-16
    js模板字符串实现 模板字符串如何实现 js中模板字符串
  • 字符串中找出连续最长的数字字符串的实例代码
    复制代码 代码如下://1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) //功能: //在字符串中找出连续...
    99+
    2022-11-15
    连续最长 数字字符串
  • php中要定义字符串的原因是什么
    小编给大家分享一下php中要定义字符串的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在PHP语言中声明字符串有三种方式:1:用单引号声明2:用双引号声明3:用字界符声明1:对于单引号声明用英文半角的单引号,将字...
    99+
    2023-06-15
  • Go中的字符串应用实例分析
    这篇“Go中的字符串应用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go中的字符串应用实例分析”文章吧。字符串的本...
    99+
    2023-06-30
  • Python 字典与字符串的互转实例
    字典转换为字符串 if __name__ == '__main__': a = {'a' : 1, 'b' : 2, 'c' : 3} b = str(a) print(type(b)) ...
    99+
    2022-06-04
    字符串 字典 实例
  • C语言字符串基础使用实例分析
    本篇内容介绍了“C语言字符串基础使用实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、字符串的概念字符串是有序字符的集合字符串是程序...
    99+
    2023-06-30
  • mysql查询字符串中某个字符串出现的次数(实例详解)
    目录mysql查询字符串中某个字符串出现的次数1.首先查询"ss"的长度2.查询"jjhshdgl'ddiiiisssddddjjsssjjssjj"的长度,记录长度为le...
    99+
    2023-04-07
    mysql查询字符串某字符串出现次数 mysql查询字符串 mysql字符出现次数
  • Shell 字符串拼接的实现示例
    1. 字符串声明 概述 字符串的基本操作 脚本 1 # 声明字符串 str01="str01" echo ${str01} # 单引号也可以 # 不过后面的例子, 通常是用 双引号, 具体原因, 以后会解...
    99+
    2022-06-04
    Shell 字符串拼接
  • python获取星期字符串的实例
    目录python 获取星期字符串使用字符串操作符简化程序准确获取今天是星期几的代码(isoweekday和weekday)python 获取星期字符串 程序如下 #WeekNameP...
    99+
    2024-04-02
  • Python的字符串操作简单实例
    目录实例1:获取星期字符串实例2:获取月份字符串实例3:恺撒密码实例1:获取星期字符串 程序读入一个表示星期几的数字(1~7),输出对应的星期字符串名称。例如,输入 3,返回&ldq...
    99+
    2023-05-15
    Python字符串 Python字符串操作
  • java 字符串截取的实例详解
    java 字符串截取的实例详解题目 在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,...
    99+
    2023-05-31
    java 字符串 截取
  • Golang 分割字符串的实现示例
    目录1.按空格分割2.按字符/字符串分割3.按多个字符分割4.按多个字符串分割5.其他分割函数6.go-huge-util参考文献在开发过程中,很多时候我们有分割字符串的需求,即把一...
    99+
    2023-05-17
    Golang 分割字符串
  • Go字符串比较的实现示例
    目录Compare 和 EqualFold 区别忽略大小写比较字符串比较, 可以直接使用 == 进行比较, 也可用用 strings.Compare 比较 go 中字符串比较有三种方...
    99+
    2024-04-02
  • Python基础-字符串的使用
    字符串解释:字符串是不可变的,所有元素赋值和切片赋值操作都是非法的,属于序列一种(字符串、元组、列表)。  一、格式化字符串 (1)、format()方法==str.format() 作用:将传入的参数进行格式化 1、替换字段名的两种方...
    99+
    2023-01-31
    字符串 基础 Python
  • Python字符串的常用方法实例分析
    这篇文章主要介绍“Python字符串的常用方法实例分析”,在日常操作中,相信很多人在Python字符串的常用方法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python字符串的常用方法实例分析”的疑...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作