技術スタック
バックエンドフレームワーク SSM
SSMはSpring、Spring MVC、MyBatisを組み合わせた開発フレームワークです。それぞれが異なる機能モジュールを担当し、Java Webアプリケーションを構築します。- Spring フレームワーク: 軽量なJava開発フレームワークで、依存性注入やAOP(アスペクト指向プログラミング)、トランザクション管理などの幅広い機能を提供します。
- Spring MVC フレームワーク: Springの一部であり、Webアプリケーションの構築に使用されます。モデル・ビュー・コントローラー(MVC)設計パターンに基づいており、ビジネスロジック、UI表示、リクエスト処理を分離します。
- MyBatis フレームワーク: 持久層フレームワークで、データベースとのやり取りを簡素化します。SQLマッピングファイルを使用して、Javaオブジェクトとデータベーステーブルを関連付けます。
コード例
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Configuration
@RestController
public class GreetingController {
@GetMapping("/greet")
public String greet() {
return "こんにちは、世界!";
}
}
このコードはSpring Bootアプリケーションの基本的なエントリポイントを示しています。`@RestController`アノテーションにより、クラスがRESTful APIとして動作します。
フロントエンドフレームワーク Vue.js
Vue.jsは人気のあるJavaScriptフレームワークで、仮想DOM技術やリアクティブなデータバインディング、コンポーネントベースの開発をサポートします。コード例
<html>
<head>
<title>Vue.js デモ</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h2>{{ message }}</h2>
<button @click="toggleMessage">メッセージを切り替え</button>
</div>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'こんにちは、Vue.js!'
},
methods: {
toggleMessage() {
this.message = this.message === 'こんにちは、Vue.js!'
? 'Vue.jsは素晴らしい!'
: 'こんにちは、Vue.js!';
}
}
});
</script>
</body>
</html>
この例では、ボタンクリック時にメッセージが切り替わります。Vue.jsのリアクティブなデータバインディングにより、UIが自動的に更新されます。
持続層フレームワーク MyBatis
MyBatisはオープンソースの持続層フレームワークで、SQL文とJavaコードを分離し、データアクセスレイヤーを柔軟かつ解耦にします。システムテスト
ログイン機能のテストケース
| 入力データ | 期待される結果 | 実際の結果 | 結果分析 |
|---|---|---|---|
| ユーザー名:管理者 パスワード:123456 認証コード:正しい入力 |
システムにログイン | 成功してシステムにログイン | 結果一致 |
| ユーザー名:管理者 パスワード:111111 認証コード:正しい入力 |
パスワードが間違っている | パスワードが間違っています。再入力してください。 | 結果一致 |
ユーザー管理機能のテスト
ユーザー管理には、追加、編集、削除、検索といった機能が含まれます。
データベース設計
商品テーブルの例:
-- 商品テーブルの構造
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主キー',
`name` VARCHAR(100) NOT NULL COMMENT '商品名',
`price` DECIMAL(10, 2) NOT NULL COMMENT '価格',
`description` VARCHAR(200) DEFAULT NULL COMMENT '説明',
`stock` INT(11) NOT NULL COMMENT '在庫',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '作成日時',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新日時',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='商品テーブル';
データ挿入例
INSERT INTO `product` (`name`, `price`, `description`, `stock`)
VALUES ('iPhone 13', 999.99, '強力で先進的なスマートフォン', 100);
INSERT INTO `product` (`name`, `price`, `description`, `stock`)
VALUES ('Samsung Galaxy S21', 899.99, 'フラグシップAndroidスマートフォン', 150);