spark中利用Sql2o连接数据的例子BlogService
最近在看学习Spark Framework.
这是一个web框架,宗旨正如其官网LInk所示:Spark - A micro framework for creating web applications in Kotlin and Java 8 with minimal effort
我按着它的例子来学习.这里碰见了BlogService项目[传送门],也算是其主线一步步搭上来的例子了. // 对应的github[传送门]
我本机是Mysql,需要注意:
Mysql并没有UUID数据类型,我用的是char(50)来代替,所以整个项目也要对应的修改引用类型。
至于char(50)类型,是可以直接通过java中的String类型进行对接的。
这里说说自己遇到的几个问题:
问题1: Could not acquire a connection from DataSource - No suitable driver found for jdbc:mysql://localhost:3306/blog
这是因为没有mysql连接驱动的问题,建议搜索[mysql repository]在里面搜索 [mysql-connector-java] 选择 MYSQL Connector/J
进去之后选择对应版本。比如我的是5.14,进入之后
把这段加入maven的<dependencies>中, 重新 mvn compile 一遍项目即可
这些maven下载的依赖包,最终一般都会存储在 ~/.m2/repository 中。
小tips: 我在网上查询这个问题的时候,有人居然直接让人把 mysql-connector-java-bin.jar 这个现成的jar包放入 .../jre/lib/ext/中
这样当然是可以解决问题的,但是十分不应该。
原因主要有2个:
- 这样绕开了类路径。当手工地加载其他的类文件时,如果将它们存在扩展路径上,则不能正常的工作。
- 程序员经常会忘记3个月前所存放文件的位置。当类加载器忽略了曾今仔细设计的类路径时,程序员会毫无头绪地在头文件中查找。事实上,加载的是扩展路径上已经长时间遗忘的类。
问题2:刚安装完数据库的时候
mysql> set password = password('your_password');
问题3:当我想要让我的blogservice远程连接数据库的时候,怎么连都失败,我也开放了权限,也设置了防火墙。
于是我在局域网中找了一台有mysql的机子试着连接自己,发现提示错误号 111
原来,mysql在配置文件还有一层设置,使得只能 localhost连接。
想办法找到配置文件(各个版本可能不同,得自己找找),找到这样一句话
--bind-address="localhost"
注释掉,或者改成“*” ,或者是欲连接自己的ip即可
问题4: blogservice的post 只接受一个json对象..如果我是数组形式,他是无法接收的
所以我得想办法解决一下这个解析的问题。按理说,它相关依赖的json解析包是有对应方法的,但是我选择了自己熟悉的一种。
首先去[maven repository]搜索 [json-lib]
但是要注意,这样是不可行的,它其实还需要一句支持:完整应该是:
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
mvn compile完,在代码中引入包即可
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
之后的关键在于:
ArrayList<V> value = new ArrayList<V>();
if (valueClass != EmptyPayload.class){ // 如果负载非空
JSONArray js_a = JSONArray.fromObject(request.body());
for(int i = 0; i < js_a.size(); ++i){
System.out.println(((JSONObject)js_a.get(i)).toString());
V tmp = objectMapper.readValue(((JSONObject)js_a.get(i)).toString(),valueClass);
value.add(tmp);
}
}
如果负载非空,比如为post / get 类型,那么就把request.body()整一个String读取后化成JSONArray
之后,遍历JSONArray,使其一个个变成Java对象即可。
留意 protected abstract Answer processImpl(ArrayList<V> value, Map<String, String> urlParams, boolean shouldReturnHtml); 这些地方的函数声明要一并修改好。
另外就是以后post的时候,即使是一个对象,也需要以数组的形式发送,Json数组:
[
{
"param1" : "value_String",
"param2" : value_num
...
},
{
"param1" : "value_String",
"param2" : value_num
...
}
]
spark中利用Sql2o连接数据的例子BlogService的更多相关文章
- mysql利用binlog恢复数据详细例子
模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...
- spark 中的RDD编程 -以下基于Java api
1.RDD介绍: RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...
- 【Spark篇】---Spark中Shuffle文件的寻址
一.前述 Spark中Shuffle文件的寻址是一个文件底层的管理机制,所以还是有必要了解一下的. 二.架构图 三.基本概念: 1) MapOutputTracker MapOutputTracker ...
- php利用phpexcel导出数据
php中利用phpexcel导出数据的实现代码.对phpexcel类库不熟悉的朋友,可以阅读下<phpexcel中文帮助手册>中的内容,具体实例大家可以phpexcel快速开发指南中的相关 ...
- WPF中利用DynamicDataDisplay快速实现示波器功能
DynamicDataDisplay控件是一个功能很强的绘图工具,除了能生成曲线外,还有很多其他功能,具体见http://dynamicdatadisplay.codeplex.com/.这里你也能下 ...
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子
备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...
- redis在.net架构中的应用(1)--利用servicestack连接redis
引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...
- 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化
如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示: 步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的. 步骤二: 创 ...
- (数据科学学习手札107)在Python中利用funct实现链式风格编程
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 链式编程是一种非常高效的组织代码的方式,典型如p ...
随机推荐
- 解决 swap file “*.swp”already exists!问题
用vim编辑文件实际上是先copy一份临时文件,病映射到内存给你编辑,编辑的是临时文件,当执行:w后才保存临时文件到原文件,执行:q后才删除临时文件. 每次启动检索是否有临时文件,有就询问如何处理, ...
- 写Markdown费事?Typora让你像写word一样行云流水,所见即所得。
Typora 简介 Typora删除了预览窗口,以及所有其他不必要的干扰.取而代之的是实时预览. Markdown的语法因不同的解析器或编辑器而异,Typora使用的是GitHub Flavored ...
- CSS 基础点
Part1:font:inherit 字体的设置 设置所有元素的字体保持一致: 所有元素:*{font:inherit;} /* IE8+ */ body体用percent:body{font:100 ...
- C/C++:Windows cmd 指令
一.快捷键1. Windows键 自从104键盘首次加入Windows键后,微软便一直计划为这个键添加更多功能,当然Win8也不例外. * Win+C:调出应用Charm菜单(Metro.传统桌面) ...
- 撩课-Web大前端每天5道面试题-Day4
1. 如何实现瀑布流? 瀑布流布局的原理: ) 瀑布流布局要求要进行布置的元素等宽, 然后计算元素的宽度, 与浏览器宽度之比,得到需要布置的列数; ) 创建一个数组,长度为列数, 里面的值为已布置元素 ...
- 最全的HTTP 响应状态码列表!
摘要: HTTP状态码,我们要学会现查现用能记住最好. 简单举例几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.如果是做AJAX,RE ...
- sc create SVN-Service binpath= "D:\Program Files\Svn\bin\s vnserve.exe --service -r E:\repository\svn" displayname= "SVN-Service" start= au to depend= Tcpip [SC] OpenSCManager 失败 5:
在安装SVN服务时就会出现如下问题: C:\Users\gushangzao>sc create SVN-Service binpath= "D:\Program Files\Svn\ ...
- Angular中引入Bootstrap部分样式失效以及Jquery的$无法识别
大多数同学在模仿慕课网的时候可能会遇到引入bootstrap和jquery样式部分失效以及$符号报错,这里为大家提供正确的解决方案. 可能大家在引入试过col-md之后觉得bootstrap是ok的, ...
- Maven学习总结(五):maven命令的含义及用法
Maven有许多命令,不管是在命令行(1),还是在Myecplise10的Maven项目--右键Run As(2),还是IDEA的左下角--Maven Projects--Maven项目名--Life ...
- 理解webpack4.splitChunks之cacheGroups
cacheGroups其实是splitChunks里面最核心的配置,一开始我还认为cacheGroups是可有可无的,这是完全错误的,splitChunks就是根据cacheGroups去拆分模块的, ...