又到了“最近碰到的问题”,这次集中在Java开发过程中,涉及了XML、JSON的处理。
问题1 Shell中的判断
在写shell逻辑时,经常会使用到条件判断,shell中的条件判断符,有他自己的特点,如下所示,
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
问题2 正则
有个需求,需要通过正则,将插入a未带具体字段的SQL找出来,
String sql = “insert into aaa values ()”;
模拟测试,如果存在这种情况的,就使用insertall替换insert into aaa values,如下正则,可以正确返回,
System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.+[^(\(.+\))]values”, “insertall”));
打印:insertall()
但若表名只是一个字符,返回的就是错的,
System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.+[^(\(.+\))]values”, “insertall”));
打印:insertintoavalues()
改成这个,可以正确返回一个字符的表名,
System.out.println(sql.replace(” “, “”).replaceAll(“insertinto.?[^(\(.\))]values”, “insertall”));
打印:insertall()
但是看*+?的解释,没太理解原因,能讲清楚的朋友,还请指教下,
问题3 xml文件中过滤标签
如果想得到xml文件中这条SQL的原文,即删除所有标签,
select c1, c2, c3 from table where 1=1 and c1=#{c1}
可以用jsoup,如下语句,得到的就是删除标签的字符串,
Document doc = Jsoup.parse(str);
doc.wholeText();
返回的就是字符串的类型,可以直接使用,
String org.jsoup.nodes.Element.wholeText()
问题4 JSON解析
很多的第三方包可以解析JSON,例如fastjson,
String str = “{\”key\”:{\”name\”:[{\”value\”:\”a\”},{\”value\”:\”c\”}]}}”;
JSONObject jsonObj = JSON.parseObject(str);
System.out.println(jsonObj);
//打印:{“key”:{“name”:[{“value”:”a”},{“value”:”c”}]}}
JSONObject key = jsonObj.getJSONObject(“key”);
System.out.println(key);
//打印:{“name”:[{“value”:”a”},{“value”:”c”}]}
JSONArray name = key.getJSONArray(“name”);
System.out.println(name);
//打印:[{“value”:”a”},{“value”:”c”}]
JSONObject name1 = name.getJSONObject(0);
System.out.println(name1);
//打印:{“value”:”a”}
String value = name1.getString(“value”);
System.out.println(value);
//打印:a
问题5 JSON字符串和JAVA对象
JAVA对象转JSON字符串,
Data data = new Data();
data.setID(1);
data.setTag(1);
String s = JSON.toJSONString(data);
JSON字符串转JAVA对象,
String s = “{\”key1\”:\”k1\”,\”key2\”:\”k2\”}”;
JSONObject jObj = JSON.parseObject(s);
String k1 = jObj.getString(“key1”);
String k2 = jObj.getString(“key2”);
《最近碰到的几个问题》
问题1 在程序中和MySQL做交互的时候,提示这个错误,Column count doesn’t match value count at row 1
问题2 从MySQL集群环境用mysqldump导出导入数据的时候,提示这个错误,@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty
问题3 MySQL导出的时候,一般用什么参数?
《最近碰到的一些问题》
问题1 按照空格分割字符串的需求
问题2 MyBatis错误,Invalid bound statement (not found)
问题3 JDBC错误,java.sql.SQLException: ORA-03115
问题4 JDBC连接串中使用SID和SERVICE NAME的不同
问题5 SQL Server的CTAS
《日常工作中碰到的几个技术问题》
问题1 PLSQL Developer中文显示问题
问题2 Windows 10安装PLSQL Developer
问题3 PLSQL Developer登录报错ORA-12504
问题4 Windows 10的PLSQL Developer字体显示很小
问题5 包含特殊字符的Oracle用户名创建 问题6 执行10053未生成trace
近期更新的文章:
《小白学习MySQL-MySQL分组需求探秘》
《国产数据库排行榜解读》
《了解一下ISO 8601是什么》
《Linux系统中的kill -9和-15有什么区别?》
《小白学习MySQL – 查询会锁表?》
文章分类和索引:
《公众号700篇文章分类和索引》
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/423172.html