使用IDEA寫一個SpringBoot整合Spring data jpa的demo(詳細版)(一)

打開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;
    }

啓動項目,查看數據,你會發現自動是生成了想要表,並且還創建中間表。

在這裏插入圖片描述
暫存,以後繼續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章