서버에 요청을 보내면
DB에 있는 데이터를 JSON으로 출력해 주는 API를 만들어볼게요..
http://localhost:8089/member/멤버 번호
로 접속하게 되면, 해당 멤버 번호에 매칭되는 데이터를 출력해 주고,
http://localhost:8089/members
로 접속하게 되면, 모든 멤버들의 데이터를 출력해 주고,
http://localhost:8089/member
에 POST 방식으로 데이터를 실어서 보내주면 데이터를 추가할 수 있게끔 설계했습니다.
http://localhost:8089/members>
http://localhost:8089/member/1>
http://localhost:8089/member/3>
데이터 테이블>>
CREATE TABLE `tbl_member` (
`mno` INT(11) NOT NULL AUTO_INCREMENT,
`NAME` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_general_ci',
`id` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
`pw` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
PRIMARY KEY (`mno`) USING BTREE,
UNIQUE INDEX `id` (`id`) USING BTREE
)
테스트 데이터>>
dependencies>>
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.3.1'
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
implementation 'org.springdoc:springdoc-openapi-ui:1.6.6'
}
application.properties>>
server.port=8089
#JSP
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
#DB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/DBNAME
spring.datasource.username=DBID
spring.datasource.password=DBPW
#Mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml
MemberDto>>
package com.study.springboot.dto;
import lombok.Data;
@Data
public class MemberDto {
private int mno;
private String name;
private String id;
private String pw;
}
Controller>>
package com.study.springboot.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.study.springboot.dao.IMemberDao;
import com.study.springboot.dto.MemberDto;
import com.study.springboot.service.RestApiService;
@CrossOrigin
@RestController
public class RestApiController {
@Autowired
RestApiService service;
@Autowired
IMemberDao dao;
@GetMapping("/member/{mno}")
public ResponseEntity<MemberDto> member(@PathVariable String mno) {
MemberDto dto = service.member(mno);
return ResponseEntity.status(HttpStatus.OK).body(dto);
}
@GetMapping("/members")
public ResponseEntity<List<MemberDto>> members() {
List<MemberDto> mlist = service.members();
return ResponseEntity.status(HttpStatus.OK).body(mlist);
}
@PostMapping("/member")
public String postMember(@RequestBody MemberDto member) {
boolean result = service.postMember(member);
if (result) {
return "성공";
}
return "실패";
}
}
Service>>
package com.study.springboot.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.study.springboot.dao.IMemberDao;
import com.study.springboot.dto.MemberDto;
@Service
public class RestApiService {
@Autowired
IMemberDao dao;
public MemberDto member(String mno) {
System.out.println(dao);
return dao.getMember(Integer.parseInt(mno));
}
public List<MemberDto> members() {
System.out.println(dao.list());
return dao.list();
}
public boolean postMember(MemberDto member) {
System.out.println(member);
dao.insert(member);
return true;
}
}
IMemberDao>>
package com.study.springboot.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.study.springboot.dto.MemberDto;
@Mapper
public interface IMemberDao {
public List<MemberDto> list();
public MemberDto getMember(int mno);
public int insert(@Param("member") MemberDto member);
public int update(MemberDto member);
public int delete(int mno);
}
MemberDao>>
<?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.study.springboot.dao.IMemberDao">
<select id="list"
resultType="com.study.springboot.dto.MemberDto">
SELECT * FROM tbl_member
</select>
<select id="getMember"
resultType="com.study.springboot.dto.MemberDto">
SELECT * FROM tbl_member WHERE mno=#{param1}
</select>
<insert id="insert">
INSERT INTO tbl_member (name, id, pw)
VALUES(#{member.name}, #{member.id}, #{member.pw})
</insert>
<update id="update">
UPDATE tbl_member SET
name=#{member.name},pw=#{member.pw} WHERE mno=#{member.mno}
</update>
<delete id="delete">
DELETE FROM tbl_member WHERE mno=#{param1}
</delete>
</mapper>
'Java > Springboot' 카테고리의 다른 글
Spring Boot 회원관리 1 - 도메인, 리포지토리 생성 (0) | 2025.02.27 |
---|---|
Spring Boot - RestAPI 2 (1) | 2025.02.25 |
Spring Boot Mybatis - 게시판 만들기 (0) | 2025.02.25 |
Spring Boot - jsp 사용하기 (0) | 2025.02.25 |
Spring Boot - 빌드하고 실행하기 (1) | 2025.02.21 |