Spark web Framework 结合sql2o连接MySQL

转发请注明原文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就可以运行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值