해당 버전 설치
java로 시작하는 명은 모두 UTF-8로 변경
controller > CourseController
CourseController
package com.web.study.controller.lecture;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.web.study.dto.ResponseDto;
import com.web.study.dto.request.course.CourseReqDto;
import com.web.study.service.CourseService;
import lombok.RequiredArgsConstructor;
@RestController
@RequiredArgsConstructor
public class CourseController {
private final CourseService courseService;
//Create
@PostMapping("/course")
public ResponseEntity<? extends ResponseDto> register(@RequestBody CourseReqDto CourseReqDto) {
courseService.registeCourse(CourseReqDto);
return ResponseEntity.ok().body(ResponseDto.ofDefault());
}
}
domian.entity
Course
package com.web.study.domain.entity;
import java.time.LocalDate;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@Builder
@Getter
@ToString
public class Course {
private int id;
private int lecture_id;
private int student_id;
private LocalDate registe_date;
}
dto.request.course
CourseReqDto
package com.web.study.dto.request.course;
import java.time.LocalDate;
import com.web.study.domain.entity.Course;
import lombok.Setter;
import lombok.ToString;
@Setter
@ToString
public class CourseReqDto {
private int lectureId;
private int studentId;
private LocalDate registeDate;
public Course toEntity() {
return Course.builder()
.lecture_id(lectureId)
.student_id(studentId)
.registe_date(registeDate)
.build();
}
}
repository
CourseRepository
package com.web.study.repository;
import org.apache.ibatis.annotations.Mapper;
import com.web.study.domain.entity.Course;
@Mapper
public interface CourseRepository {
// insert, update, delete 리턴 자료형 없음
public int registe(Course course );
}
service
CourseService
package com.web.study.service;
import com.web.study.dto.request.course.CourseReqDto;
public interface CourseService {
public void registeCourse(CourseReqDto courseReqDto);
}
CourseServiceImpl
package com.web.study.service;
import org.springframework.stereotype.Service;
import com.web.study.domain.entity.Course;
import com.web.study.dto.request.course.CourseReqDto;
import com.web.study.repository.CourseRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class CourseServiceImpl implements CourseService {
private final CourseRepository courseRepository;
@Override
public void registeCourse(CourseReqDto courseReqDto) {
Course course = courseReqDto.toEntity();
courseRepository.registe(course);
}
}
src/main/resources
mappers
course.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.web.study.repository.CourseRepository">
<insert id="registe" parameterType="Course">
insert into course_mst
values (0, #{lecture_id}, #{student_id}, #{registe_date})
</insert>
</mapper>
LecturerRepository
package com.web.study.repository;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.web.study.domain.entity.Lecturer;
@Mapper
public interface LecturerRepository {
// insert, update, delete 리턴 자료형 없음
public int registe(Lecturer lecturer);
public List<Lecturer> getLecturerAll();
}
mappers > lecturer.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.web.study.repository.LecturerRepository">
<insert id="registe" parameterType="Lecturer">
insert into lecturer_mst
values (0, #{name}, #{birth_date})
</insert>
<select id="getLecturerAll" resultType="Lecturer">
select
id,
name,
birth_date
from
lecturer_mst
</select>
</mapper>
service > LecturereService
package com.web.study.service;
import java.util.List;
import com.web.study.domain.entity.Lecturer;
import com.web.study.dto.request.lecture.LecturerReqDto;
public interface LecturerService {
public void registeLecturer(LecturerReqDto lecturerReqDto);
public List<Lecturer> getLecturerAll();
}
LecturerServiceImpl
package com.web.study.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.web.study.domain.entity.Lecturer;
import com.web.study.dto.request.lecture.LecturerReqDto;
import com.web.study.repository.LecturerRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class LecturerServiceImpl implements LecturerService {
private final LecturerRepository lecturerRepository;
@Override
public void registeLecturer(LecturerReqDto lecturerReqDto) {
Lecturer lecturer = lecturerReqDto.toEntity();
lecturerRepository.registe(lecturer);
}
@Override
public List<Lecturer> getLecturerAll() {
return lecturerRepository.getLecturerAll();
}
}
controller > LecturerController
package com.web.study.controller.lecture;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.web.study.dto.DataResponseDto;
import com.web.study.dto.ResponseDto;
import com.web.study.dto.request.lecture.LecturerReqDto;
import com.web.study.service.LecturerService;
import lombok.RequiredArgsConstructor;
@RestController
@RequiredArgsConstructor
public class LecturerController {
private final LecturerService lecturerService;
//Create
@PostMapping("/lecturer")
public ResponseEntity<? extends ResponseDto> register(@RequestBody LecturerReqDto lecturerReqDto) {
lecturerService.registeLecturer(lecturerReqDto);
System.out.println(lecturerReqDto);
return ResponseEntity.ok().body(ResponseDto.ofDefault());
}
@GetMapping("/lecturers")
public ResponseEntity<? extends ResponseDto> getLecturers() {
return ResponseEntity.ok().body(DataResponseDto.of(lecturerService.getLecturerAll()));
}
}
LecturerRepository
> lecturer.xml
> LecturerService
> LecturerServiceImpl
> LecturerController
>
why?
dto > response(패키지 생성) > LecturerRespDto
package com.web.study.dto.response;
import java.time.LocalDate;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class LecturerRespDto {
private int id;
private String name;
private LocalDate birthDate;
}
domain.entity > Lecturer
package com.web.study.domain.entity;
import java.time.LocalDate;
import com.web.study.dto.response.LecturerRespDto;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@Builder
@Getter
@ToString
public class Lecturer {
private int id;
private String name;
private LocalDate birth_date;
public LecturerRespDto toDto() {
return LecturerRespDto.builder()
.id(id)
.name(name)
.birthDate(birth_date)
.build();
}
}
LecturerService
package com.web.study.service;
import java.util.List;
import com.web.study.dto.request.lecture.LecturerReqDto;
import com.web.study.dto.response.LecturerRespDto;
public interface LecturerService {
public void registeLecturer(LecturerReqDto lecturerReqDto);
public List<LecturerRespDto> getLecturerAll();
public LecturerRespDto findLecturerById(int id);
}
LecturerServiceImpl
package com.web.study.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import com.web.study.domain.entity.Lecturer;
import com.web.study.dto.request.lecture.LecturerReqDto;
import com.web.study.dto.response.LecturerRespDto;
import com.web.study.repository.LecturerRepository;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class LecturerServiceImpl implements LecturerService {
private final LecturerRepository lecturerRepository;
@Override
public void registeLecturer(LecturerReqDto lecturerReqDto) {
Lecturer lecturer = lecturerReqDto.toEntity();
lecturerRepository.registe(lecturer);
}
@Override
public List<LecturerRespDto> getLecturerAll() {
List<LecturerRespDto> dtos = new ArrayList<>();
lecturerRepository.getLecturerAll().forEach(entity -> {
dtos.add(entity.toDto());
});
return dtos;
}
@Override
public LecturerRespDto findLecturerById(int id) {
return lecturerRepository.findLecturerById(id).toDto();
}
}
course.xml
>CourseController
Course
package com.web.study.domain.entity;
import java.time.LocalDate;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@Builder
@Getter
@ToString
public class Course {
private int id;
private int lecture_id;
private int student_id;
private LocalDate registe_date;
private Lecture lecture;
private Student student;
}
Course.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.web.study.repository.CourseRepository">
<resultMap type="com.web.study.domain.entity.Lecturer" id="lecture">
<result column="id" property="id"/>
<result column="lecture_name" property="lecture_name"/>
<result column="lecture_price" property="lecture_price"/>
<result column="lecturer_id" property="lecturer_id"/>
</resultMap>
<resultMap type="com.web.study.domain.entity.Student" id="student">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="birth_date" property="birth_date"/>
</resultMap>
<resultMap type="com.web.study.domain.entity.Course" id="course">
<result column="id" property="id"/>
<result column="lecture_id" property="lecture_id"/>
<result column="student_id" property="student_id"/>
<result column="registe_date" property="registe_date"/>
<collection property="lecture" resultMap="lecture"></collection>
<collection property="student" resultMap="student"></collection>
</resultMap>
<insert id="registe" parameterType="Course">
insert into course_mst
values (0, #{lecture_id}, #{student_id}, #{registe_date})
</insert>
<select id="getCourseAll" resultType="Course">
select
cm.id,
cm.lecture_id,
cm.student_id,
cm.registe_date,
lm.id,
lm.lecture_name,
lm.lecture_price,
lm.lecturer_id,
lrm.id,
lrm.name,
lrm.birth_date,
sm.id,
sm.name,
sm.birth_data
from
course_mst cm
left outer join lecture_mst lm on(lm.id = cm.lecture_id)
left outer join lecturer_mst lrm on(lrm.id = lm.lecturer_id)
left outer join student_mst sm on(sm.id = cm.student_id)
</select>
</mapper>
MySQL