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、ブラウザが次のように表示されると、成功したことを示します.