RESTful+MySQLプログラム



準備作業
1、mysqlをインストールします.
2、mysql可視化ツールNavicatをインストールする.(本人好みなので、この可視化ツールをしばらく使います).
3、Intellijはmysql jdbc駆動をインストールする.
4、GlassFishにmysql jdbcドライブを加える.
 
インストール起動mysql
1、ダウンロードアドレスhttps://www.mysql.com/downloads/ (多くのダウンロードルートを検索できますが、公式にダウンロードすることをお勧めします.分かります).
2、ヒントに従ってインストール構成を行う.(これはポイントではなく、よくわからない自分google).
3、インストールができない場合はシステム権限の問題であるべきで、システム管理者権限でインストールすればよい.(win 10でのインストールで権限の問題に遭遇しました).
4、mysqlサービスを起動する.
5、テストデータを入れる.データベースはRESTfulと名付けられ、id、name、cover、priceの4つのフィールドを含むテーブルProductを追加しました.具体的には、
テストを容易にするために、まず記録を追加しました.
 
Navicatのインストール
私たちはNavicatで可視化操作を行います.もちろんmysqlが提供するツールやコマンドラインで直接データ操作を行うことができます.
1、ダウンロードアドレスhttps://www.navicat.com/downloadお金を払うかどうかは自分次第です.分かります.
2、ヒントに従ってインストールする.
 
Intellijインストールmysql jdbcドライバ
1、IntellijでメインメニューからView|Tool Windows|Databasesを選択します.
2、右側にDatabase欄をポップアップし、上の「+」を選択し、「DataSource|MySQL」を選択すると、Data Source and Driveのダイアログがポップアップされます.
 
3、左上の「+」をクリックし、MySQLを選択します.ヒントに従って右側のフィールドに入力します.
4、右パネルのDriver:MySQLをクリックし、MySQLドライバをダウンロードします.
 
GlassFishにmysql jdbcドライバを追加します.
1、mysqlの駆動(eg:mysql-connector-java-5.135-bin.jar)を..glassfish 4glassfishlibに入れる (具体的にはGlassFishのインストールディレクトリを参照).
 
エンコーディング
1、mysqlドライバjarパッケージを追加します.
2、ディレクトリ構造は以下の通りである.
3、ディレクトリ構造の紹介.boにはエンティティクラス、daoはデータベース関連の操作クラス(流れを理解しやすいようにORMなどには触れません).各クラスの詳細を見てみましょう.
BoProduct.java
package bo;/**
 * Created by Administrator on 2017/2/19 0019. */public class BoProduct {    private int id;    private String name;    private String cover;    private long price;    public BoProduct(int id, String name, String cover, long price) {        this.id = id;        this.name = name;        this.cover = cover;        this.price = price;
    }    public int getId() {        return id;
    }    public void setId(int id) {        this.id = id;
    }    public String getName() {        return name;
    }    public void setName(String name) {        this.name = name;
    }    public String getCover() {        return cover;
    }    public void setCover(String cover) {        this.cover = cover;
    }    public long getPrice() {        return price;
    }    public void setPrice(long price) {        this.price = price;
    }

    @Override    public String toString() {        return "BoProduct{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", cover='" + cover + '\'' +
                ", price=" + price +
                '}';
    }
}

 
DbConnection.java
package dao;/**
 * Created by Administrator on 2017/2/19 0019. */import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DbConnection {    public Connection getConnection() throws Exception {        try {
            String connectionURL = "jdbc:mysql://localhost:3306/RESTful";
            Connection connection = null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            connection = DriverManager.getConnection(connectionURL, "root", "root");            return connection;
        } catch (SQLException e) {
            e.printStackTrace();            throw e;
        } catch (Exception e) {
            e.printStackTrace();            throw e;
        }
    }
}

 
DbProductManager.java
package dao;import bo.BoProduct;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;/**
 * Created by Administrator on 2017/2/19 0019. */public class DbProductManager {    public List getAllProduct() {
        List reuslt = null;
        DbConnection database = new DbConnection();
        Connection connection = null;        try {
            connection = database.getConnection();
            PreparedStatement ps = connection
                    .prepareStatement("SELECT * FROM product");
            ResultSet rs = ps.executeQuery();
            reuslt = new ArrayList<>();            while (rs.next()) {
                BoProduct item = new BoProduct(rs.getInt("id"),rs.getString("name"),rs.getString("cover"),rs.getLong("price"));
                reuslt.add(item);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }        return reuslt;
    }
}

 
HelloWorld.java
import bo.BoProduct;import dao.DbProductManager;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import java.util.List;/**
 * Created by Administrator on 2017/2/18 0018. */@Path("/helloworld")public class HelloWorld {
    @GET
    @Produces(MediaType.TEXT_PLAIN)    public String getClichedMessage() {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("data being
");         DbProductManager dbProductManager = new DbProductManager();         List allProduct = dbProductManager.getAllProduct();        if (null != allProduct && !allProduct.isEmpty()) {            for (BoProduct item : allProduct) {                 stringBuilder.append(item.toString()).append("
");             }         }         stringBuilder.append("data end
");        return stringBuilder.toString();     } }

 
MyApplication
import javax.ws.rs.ApplicationPath;import javax.ws.rs.core.Application;import java.util.HashSet;import java.util.Set;/**
 * Created by Administrator on 2017/2/18 0018. *///Defines the base URI for all resource URIs.@ApplicationPath("/")//The java class declares root resource and provider classespublic class MyApplication extends Application {    //The method returns a non-empty collection with classes, that must be included in the published JAX-RS application    @Override    public Set> getClasses() {
        HashSet h = new HashSet>();
        h.add(HelloWorld.class);        return h;
    }
}

プログラムの実行
1、運転ボタンをクリックする.
2、IDEはあなたのために関係のないことをしました(業務ではありません):サーバーにコンパイルして配置し、ブラウザを起動します.
3、ブラウザが次のように表示されると、成功したことを示します.