ER図
成果物イメージ
schema.sql
schema.sql
-- テーブル削除
DROP TABLE IF EXISTS company CASCADE;
DROP TABLE IF EXISTS employee CASCADE;
-- カテゴリーテーブル
CREATE TABLE company
(
id SERIAL PRIMARY KEY,
name TEXT
);
-- アイテムテーブル
CREATE TABLE employee
(
id SERIAL PRIMARY KEY,
name TEXT,
company_id Integer
);
data.sql
data.sql
-- カテゴリーテーブルデータ
INSERT INTO company(name) VALUES('aaa株式会社');
INSERT INTO company(name) VALUES('bbb株式会社');
INSERT INTO company(name) VALUES('ccc株式会社');
INSERT INTO company(name) VALUES('ddd株式会社');
INSERT INTO company(name) VALUES('eee株式会社');
-- 商品テーブルデータ
INSERT INTO employee(name, company_id) VALUES('田中太郎', 1);
INSERT INTO employee(name, company_id) VALUES('鈴木一郎', 1);
INSERT INTO employee(name, company_id) VALUES('佐藤健', 2);
INSERT INTO employee(name, company_id) VALUES('渡辺順一', 2);
INSERT INTO employee(name, company_id) VALUES('斎藤真由美', 3);
INSERT INTO employee(name, company_id) VALUES('佐々木信人', 3);
INSERT INTO employee(name, company_id) VALUES('武田昌幸', 4);
INSERT INTO employee(name, company_id) VALUES('石川小百合', 4);
INSERT INTO employee(name, company_id) VALUES('太田雅子', 5);
INSERT INTO employee(name, company_id) VALUES('橋本寮', 5);
schema.sqlとdata.sqlは特に変える必要はない
Entity
Company.java
@Entity
@Table(name = "company")
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@OneToMany()//1対多
@JoinColumn(name = "company_id")
private List<Employee> favoriteHotels = new ArrayList<>();
//ゲッター、セッター、コンストラクタ省略
フィールドとは別で、OneToManyとする
Employee.java
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@ManyToOne //多対1
@JoinColumn(name = "company_id")
private Company company;
//ゲッター、セッター、コンストラクタ省略
ManyToOneの方は、フィールドの方に記述する。
Controller
EmployeeController.java
@GetMapping("/employee")
public String employee(Model model) {
List<Employee> employee = employeeRepository.findAll();
model.addAttribute("employee" , employee);
return "employeeList";
}
HTML
employee.html
<h3>全社員一覧</h3>
<table border="1">
<tr>
<th>社員ID</th>
<th>名前</th>
<th>会社名</th>
</tr>
<tr th:each="emp:${employee}">
<td th:text="${emp.id}"></td>
<td th:text="${emp.name}"></td>
<!--companyIdから会社名(name)を持ってくる-->
<td th:text="${emp.company.name}"></td>
</tr>
</table>
<a href="/main">会社一覧</a>
参考サイト