转发请注明原文http://blog.csdn.net/qq_34911465/article/details/70666392
Spark
是一个轻量级的JAVA网络框架,使用这个框架可以轻易开发一个java web应用。
Sql2o
简单的java框架,用来简化java的数据库连接
这里将写一个简单的例子,使用spark和sql2o来连接mysql
文件结构:
按照图中的文件结构来简单的介绍,这里的resouces文件夹下的是将用到的界面文件,java文件夹下是主代码,包括了与数据库连接的方面
界面:
首先先编写一个html界面,或者直接从网络上下载一个界面来使用即可,按照官网的描述,编写的界面放在resource文件夹下的public里面。
使用这个简单的界面来传递数据并保存,下图是数据库的存储表
Data代码
public class Data{
public int id;
public String username;
public String password;
public int age;
}
与数据库创建连接
创建连接这里使用了单例模式,以便只创建一个对象,节省资源
public class myDao{
private static Sql2o sql2o;
public static Sql2o getSql2o(){
if(sql2o==null){
synchronized(myDao.class){
if(sql2o==null)sql2o=new Sql2o("jdbc:mysql://localhost:3306/spark"
,"root","123@qq.COM");
}
}
return sql2o;
}
}
数据库操作
public class Sql2oModel{
private Sql2o sql2o;
public Sql2oModel(){
sql2o=myDao.getSql2o();
}
public Sql2oModel(Sql2o _sql2o){
sql2o=_sql2o;
}
//将数据插入到数据库中,当然可以把参数改成Data对象,不过这里用的是直接传参
public void insertPost(int id,String username,
String password,int age){
String insertSql="INSERT INTO example(id,username,password,age) values(:id,:name,:word,:age)";
try (Connection con=sql2o.open()){
con.createQuery(insertSql)
.addParameter("id",id).addParameter("name",username)
.addParameter("word",password).addParameter("age",age)
.executeUpdate();
}
}
//将数据库中所有的成员读取出来并且返回
public List<Data> getAllModel(){
String querySql="SELECT id,username,password,age From example";
try (Connection con=sql2o.open()){
return con.createQuery(querySql).executeAndFetch(Data.class);
}
}
}
主函数代码
public class HelloWorld{
private static List<Data> list;
private static Sql2oModel sql2oModel;
public static void main(String[] args){
staticFiles.location("/public");
post("/postuser",(req,res)->{
int id=req.queryMap().get("id").integerValue();
String username=req.queryMap().get("username").value();
String password=req.queryMap().get("password").value();
int age=req.queryMap().get("age").integerValue();
if(sql2oModel==null)sql2oModel=new Sql2oModel();
sql2oModel.insertPost(id,username,password,age);
res.status(200);
return "<h1>success</h1>";
});
get("/alluser",(req,res)->{
if(sql2oModel==null)sql2oModel=new Sql2oModel();
list=sql2oModel.getAllModel();
String LS="<h3>Below is id,username,password,age :";
for(Data model:list){
LS+="<h4> "+model.id+" , "+model.username+" , "+model.password+" , "+model.age+"</h4>";
}
return LS;
});
}
}
主函数中只写了两个方法,一个是使用post并调用数据库操作中的插入方法,将提交的表单中的数据插入到数据库中,而get方法,是调用数据库操作中的获取数据的方法,取出数据库中的所有数据并且显示出来。当然这里还可以写redirect方法,将一个链接重定向到我们之前所写的html文件,而不必打很长的地址来访问。
从上面的代码我们可以看到,使用spark和sql2o来写一个java web应用,并且使用这个web应用保存数据的代码十分简洁。
sql2o也比直接使用jdbc要简单的多,少写了很多try catch语句块,并且这个开发过程也更简便,而使用orm呢,感觉就比较麻烦了,虽然没有使用过orm,但是在看一些著名的orm如hibernate的官网描述时,觉得很麻烦,又有xml配置文件要写。就是觉得麻烦,不过使用orm也会有使用orm的优点,这就不再赘述了。
因为项目是使用maven来编译连接的,那么贴出maven的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>HelloWorld</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<repositories>
<repository>
<id>Spark repository</id>
<url>http://46.137.105.19:8081/nexus/content/reposiroties/spark/</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>HelloWorld</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5.5</version>
</dependency>
<dependency>
<groupId>org.sql2o</groupId>
<artifactId>sql2o</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
</project>
编译连接生成了jar文件,使用java -jar 文件名.jar就可以运行了。