打開IDEA,選擇creat new project
選擇Spring Initializr,然後next
輸入相應的項目名稱,隨便取名字(業務核心:教師工作量管理)
選擇依賴包
finsh
項目目錄:隨便把application.properties修改成application.yml
配置YML文件
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/teacher_manager?useSSL=true&serverTimezone=UTC
username: root
password: root
jpa:
hibernate:
ddl-auto: update #正向工程
show-sql: true #顯示SQL
創建entity類
Teacher類
package com.example.teacher_workload_management.entity;
import lombok.Data;
import javax.persistence.*;
/**
* @ClassName: Teacher
* @Description: TODO
* @author: yehw
* @date: 2020年06月12日 22:23
*/
@Entity
@Table(name = "teacher")//自動生成一個表名是teacher表
@Getter
@Setter
public class Teacher {
/**
* 主鍵
*/
@Id//主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增
private long id;
/**
* 教師工號
*/
private long teacherID;
/**
* 姓名
*/
private String name;
}
Course類
package com.example.teacher_workload_management.entity;
import lombok.Data;
import javax.persistence.*;
/**
* @ClassName: Course
* @Description: 課程表
* @author: yehw
* @date: 2020年06月12日 22:44
*/
@Entity
@Table(name = "course")
@Getter
@Setter
public class Course {
/**
* 主鍵
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
/**
* 課程編號
*/
private long courseID;
/**
* 課程名字
*/
private String name;
/**
* 理論課時
*/
private Double theoryHours;
/**
* 實踐課時
*/
private Double practiceHours;
}
老師和課程是多對多的關係,所以回頭再在teacher類加入以下代碼:
/**
* 老師和課程是多對多的關係
* 一個老師可能又多個課程
* 也有可能多個老師有共同課程
*/
@ManyToMany(mappedBy = "teacherSet",fetch = FetchType.EAGER)
private Set<Course> courseSet;
course類種加入以下代碼
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "teacher_counrse", joinColumns = {
@JoinColumn(name = "course_id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "teacher_id", referencedColumnName = "id")})
private Set<Teacher> teacherSet;
然後寫Dao層
TeacherDao接口
package com.example.teacher_workload_management.dao;
import com.example.teacher_workload_management.entity.Teacher;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @ClassName: TeacherDao
* @Description: TODO
* @author: yehw
* @date: 2020年06月12日 23:11
*/
public interface TeacherDao extends JpaRepository<Teacher,Long> ,JpaSpecificationExecutor<Teacher> {
}
CourseDao接口
package com.example.teacher_workload_management.dao;
import com.example.teacher_workload_management.entity.Course;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @ClassName: CourseDao
* @Description: TODO
* @author: yehw
* @date: 2020年06月12日 23:12
*/
public interface CourseDao extends JpaRepository<Course,Long>, JpaSpecificationExecutor<Course> {
}
寫Controller
package com.example.teacher_workload_management.controller;
import com.example.teacher_workload_management.dao.CourseDao;
import com.example.teacher_workload_management.dao.TeacherDao;
import com.example.teacher_workload_management.entity.Course;
import com.example.teacher_workload_management.entity.Teacher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
/**
* @ClassName: TeacherController
* @Description: TODO
* @author: yehw
* @date: 2020年06月12日 23:16
*/
@RestController
public class TeacherController {
@Autowired
TeacherDao teacherDao;
@Autowired
CourseDao courseDao;
@GetMapping("/insert")
public String insert(){
Teacher teacher=new Teacher();
teacher.setTeacherID(10001L);
teacher.setName("張雪峯"+ new Random().nextInt());
Course c1=new Course();
c1.setName("化學課"+ new Random().nextInt());
c1.setPracticeHours(13.00);
c1.setTheoryHours(24.00);
c1.setCourseID(322233);
Course c2=new Course();
c2.setName("數學課"+ new Random().nextInt());
c2.setPracticeHours(11.00);
c2.setTheoryHours(22.00);
c2.setCourseID(3455666);
teacher.getCourseSet().add(c1);
teacher.getCourseSet().add(c2);
c1.getTeacherSet().add(teacher);
c2.getTeacherSet().add(teacher);
teacherDao.save(teacher);
courseDao.save(c1);
courseDao.save(c2);
return "插入成功";
}
}
分頁查詢
@RequestMapping("pageFind")
public Page get(Pageable pageable){
PageRequest of = PageRequest.of(1, 5);
Page<Teacher> page=teacherDao.findAll(of);
return page;
}
啓動項目,查看數據,你會發現自動是生成了想要表,並且還創建中間表。
暫存,以後繼續更新。