java.util.UnknownFormatConversionException: Conversion = ‘j‘ || Conversion = ‘D‘ || Conversion = ‘Y‘

执行内容:

String a = "select * from j_question j where j.status = %s and j.title like '%java%'";
String format = String.format(a, 1);
System.out.println(format);

拼接SQL时,最后需要 format 替换字符串中的 %s 占位符。

预期效果:

select * from j_question j where j.status = 1 and j.title like '%java%'

报错内容:

Conversion = ‘j’ 或者是 Conversion = ‘D’ 或者 Conversion = ‘Y’

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'j'at java.base/java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2839)at java.base/java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2865)at java.base/java.util.Formatter.parse(Formatter.java:2713)at java.base/java.util.Formatter.format(Formatter.java:2655)at java.base/java.util.Formatter.format(Formatter.java:2609)at java.base/java.lang.String.format(String.java:2897)

错误原因:

String.format() 格式化字符串输出时,任何未明确定义为转换的字符都是非法的,在格式字符串中使用此类字符将导致 UnknownFormatConversionException。

1、先来明确一下 % 的作用:

% 就相当于一种语法格式, % 后面需要跟上需要转换的参数,而参数的取值,无非就如下这些情况:

转换参数类别说明
‘b’,‘B’常规如果参数 arg 为 null,则结果为 “false”。如果 arg 是一个 boolean 值或 Boolean,则结果为 String.valueOf() 返回的字符串。否则结果为 “true”。
‘h’,‘H’常规如果参数 arg 为 null,则结果为 “null”。否则,结果为调用 Integer.toHexString(arg.hashCode()) 得到的结果。
‘s’, ‘S’常规如果参数 arg 为 null,则结果为 “null”。如果 arg 实现 Formattable,则调用 arg.formatTo。否则,结果为调用 arg.toString() 得到的结果。
‘c’,‘C’字符结果是一个 Unicode 字符
‘d’整数结果被格式化为十进制整数
‘o’整数结果被格式化为八进制整数
‘x’, ‘X’整数结果被格式化为十六进制整数
‘e’,‘E’浮点结果被格式化为用计算机科学记数法表示的十进制数
‘f’浮点结果被格式化为十进制数
‘g’,‘G’浮点根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。
‘a’,‘A’浮点结果被格式化为带有效位数和指数的十六进制浮点数
‘t’, ‘T’日期/时间日期和时间转换字符的前缀。请参阅日期/时间转换。
‘%’百分比结果为字面值 ‘%’ (’"u0025’)
‘n’行分隔符结果为特定于平台的行分隔符

2、再来解释一下什么是未明确定义的字符:

通过上面这些取值我们知道了,%[参数] 顶多就 %b、%B、%h、%H、%s、%S … %%、%n 等。

而在需要转换的字符串中有这么一段 %java%,也就是他会把 %j 当做一个转换参数,很显然上边的取值中就没有 %j 嘛,所以就报错了,就如同错误内容一样:Conversion = ‘j’

那么需要用到 % 的地方怎么办呢?

解决方法:

通过上边的 % 取值发现,%% 最终的输出结果为一个 %,所以解决方法就是使用双重 %,

比如之前的 %java%,需要修改为 %%java%%

String a = "select * from j_question j where j.status = %s and j.title like '%%java%%'";

博客园:https://www.cnblogs.com/niceyoo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[js] 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件?

[js] 在DOM上同时绑定两个点击事件&#xff08;一个用捕获&#xff0c;一个用冒泡&#xff09;&#xff0c;事件总共会执行几次&#xff0c;先执行哪个事件&#xff1f; 两次 先捕获&#xff0c;后冒泡个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易…

Jenkins: QQ/Wechat机器人群消息通知Job构建结果

简介 Jenkins是持续化集成的一个核心部件&#xff0c;它上游从仓库&#xff08;gitlab&#xff09;等拉取代码&#xff0c;经编译构建&#xff0c;将应用发布至下游目标环境&#xff1b;构建结果通知的方式有很多&#xff0c;现成的插件有邮件和钉钉方式&#xff0c;但是就方便…

[js] json和对象有什么区别?

[js] json和对象有什么区别&#xff1f; JSON 是对象&#xff0c;但对象不一定是 JSON。对象是由属性和属性值组成&#xff0c;也就是 KEY->VALUE 对。 对象中的 value 可以是任意的数据类型&#xff0c;包括函数。而 JSON 中的 value 不能为函数。个人简介 我是歌谣&…

Java中的Set对象去重

前言部分 Set<T> 去重相信大家一定不陌生&#xff0c;尤其是在 Set<String>、Set<Integer> 等等&#xff0c;但是在使用 Set<实体> &#xff0c;在不重写 equals()、hashCode() 方法情况下&#xff0c;直接使用貌似并不能生效。 所以想要 Set<实体…

openfalcon架构及相关服务配置详解

一&#xff1a;openfalcon组件 1.falcon-agent 数据采集组件 agent内置了一个http接口&#xff0c;会自动采集预先定义的各种采集项&#xff0c;每隔60秒&#xff0c;push到transfer。 2.transfer agent与transfer建立长连接&#xff0c;将数据汇报给tarnsfer transfer默认监听…

DBeaver连接达梦|虚谷|人大金仓等国产数据库

前言 工作中有些项目可能会接触到「达梦、虚谷、人大金仓」等国产数据库&#xff0c;但通常这些数据库自带的连接工具使用并不方便&#xff0c;所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版&#xff0c;下文以达梦为例&#xff08;其他国产数据库连接操作方式一样&…

[js] script所在的位置会影响首屏显示时间吗

[js] script所在的位置会影响首屏显示时间吗 会&#xff0c;如果script放在头部&#xff0c;js的执行会阻塞dom树的构建个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

luogu4462 异或序列

题目大意 给出n,m,k&#xff0c;有n个数的序列&#xff0c;m次询问一段区间&#xff0c;问异或和等于K的子区间的个数。 题解 本题一看就是莫队。但要解决该题需要以下性质&#xff1a; 定理&#xff1a; $$a\oplus bc\Leftrightarrow a\oplus cb\Leftrightarrow b\oplus ca$$ …

Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常

前言 今天看群里小伙伴问了一个非常有意思的问题&#xff1a; 使用 Map<String,Object> 对象接收前端传递的参数&#xff0c;在后端取参时&#xff0c;因为接口文档中明确该字段类型为 Long &#xff0c;所以对接收的参数进行了强转&#xff0c;即 (Long)参数 &#xf…

adb无法连接安卓手机

确保已安装好手机驱动&#xff08;在设备管理器中能找到安卓的设备&#xff09;查看设备的VID信息找到你的模拟器存放的目录&#xff0c;<例如&#xff1a;C:\Users\Administrator\.android 下找到或新建一个adb_usb.ini文件。文档内容写入VID即可 在cmd上输入adb kill-serv…

那些对你说学历不重要,技术重要的人,他们大部分都是有学历的。

随便唠叨几句 最近有挺多小伙伴在微信上私信我&#xff0c;咨询提升学历问题的&#xff0c;希望我能给点意见&#xff0c;当然&#xff0c;这里面大部分是涉及到专升本&#xff0c;因为自己是过来人&#xff0c;所以感触比较深&#xff0c;耐心的给予了回复&#xff0c;整理后…

前端学习(2856):简单秒杀系统学习之定时器循环显示

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>javascrip</title></head><body ><script>function show() {console.log(每过1秒展示);}function show2(str) {…

SpringBoot中的Tomcat是如何启动的

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>添加如上 Web 的依赖&#xff0c;Spring Boot 就帮我们内置了 Servlet 容器&#xff0c;默认使用的是 Tomcat&a…

json传输二进制的方案【转】

本文转自&#xff1a;http://wiyi.org/binary-to-string.html json 是一种很简洁的协议&#xff0c;但可惜的是&#xff0c;它只能传递基本的数型(int,long,string等)&#xff0c;但不能传递byte类型。如果想要传输图片等二进制文件的话&#xff0c;是没办法直接传输。 本文提供…

IDEA社区版(Community)和付费版(UItimate)的区别

比对类型Ultimate(终极版,付费)Community(社区版,免费)语言支持JavaJavaGroovyGroovyKotlinKotlinScala&#xff08;通过插件&#xff09;Scala&#xff08;通过插件&#xff09;Python 和 Jython&#xff08;通过插件&#xff09;Python 和 Jython&#xff08;通过插件&#x…

从使用传统Web框架到切换到Spring Boot后的总结

1、前言 其实我接触 Spring Boot 的时间并不长&#xff0c;所以还算一个初学者&#xff0c;这篇文章也算是我对 Spring Boot 学习以及使用过程中的复盘&#xff0c;如果文章出现描述错误或表达不清晰的地方&#xff0c;欢迎大家在评论区留言互动。 没想到 Spring Boot 这两年…

前端学习(2859):简单秒杀系统学习之前端界面布局

<html><head><meta charset"utf-8"><link rel"stylesheet" type"text/css" href"miao.min.css" charset"utf-8"><title>秒杀系统</title></head><body><div class"…

Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M

之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包&#xff0c;Spring Boot 应用程序不用额外部署到外部容器中&#xff0c;可以直接通过 Maven 命令将项目编译成可执行的 jar 包&#xff0c;然后通过 java -jar 命令启动即可&#xff0c;…