(작성 중인 글입니다. 직접 서비스 올리며 글 수정 예정입니다.)
(postgres 와 연동 예정입니다)
mybatis-demo
┣ src
┃ ┗ main
┃ ┣ java
┃ ┃ ┗ com
┃ ┃ ┗ example
┃ ┃ ┗ demo
┃ ┃ ┣ DemoApplication.java // 스프링부트 메인
┃ ┃ ┣ MyDataController.java // 컨트롤러
┃ ┃ ┣ MyDataMapper.java // 매퍼 인터페이스
┃ ┃ ┗ MyData.java // DTO
┃ ┗ resources
┃ ┣ application.properties
┃ ┗ mapper
┃ ┗ MyDataMapper.xml // 매퍼 XML
┗ pom.xml
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mybatis-demo</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
<spring-boot.version>3.0.2</spring-boot.version>
<mybatis-spring-boot.version>3.0.0</mybatis-spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<!-- DB 드라이버: 여기서는 테스트용으로 H2 인메모리 DB -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- DB 드라이버: Postgres Driver -->
<dependency>
<groupId> org.postgresql </groupId>
<artifactId> postgresql </artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
# DB 설정(H2 인메모리 예시)
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# PostgreSQL 설정 (예시)
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=postgres
# (선택) PostgreSQL 드라이버 명시
spring.datasource.driver-class-name=org.postgresql.Driver
# MyBatis XML 매퍼 위치
mybatis.mapper-locations=classpath:mapper/*.xml
# (선택) 콘솔에 SQL 찍고 싶다면
#logging.level.org.mybatis=DEBUG
Application 메인 클래스
package com.example.demo.dto;
public class MyData {
private int id;
private String name;
// Getter/Setter
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
DTO (MyData.java)
package cohttp://m.example.demo.dto;
public class MyData {
private int id;
private String name;
// Getter/Setter
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
Mapper 인터페이스 (MyDataMapper.java)
package cohttp://m.example.demo.mapper;
import cohttp://m.example.demo.dto.MyData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface MyDataMapper {
// 단일 행 조회
MyData selectById(@Param("id") int id);
}
XML 매퍼 (MyDataMapper.xml)
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cohttp://m.example.demo.mapper.MyDataMapper">
<select id="selectById" resultType="cohttp://m.example.demo.dto.MyData">
SELECT Id AS id,
Name AS name
FROM MyTable
WHERE Id = #{id}
</select>
</mapper>
Controller (MyDataController.java)
package cohttp://m.example.demo.controller;
import cohttp://m.example.demo.dto.MyData;
import cohttp://m.example.demo.mapper.MyDataMapper;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/mydata")
public class MyDataController {
private final MyDataMapper myDataMapper;
public MyDataController(MyDataMapper myDataMapper) {
this.myDataMapper = myDataMapper;
}
// GET /mydata/1
@GetMapping("/{id}")
public MyData getDataById(@PathVariable("id") int id) {
// DB에서 id=1인 행을 조회
return myDataMapper.selectById(id);
}
}
728x90
반응형
'Spring Boot' 카테고리의 다른 글
[Spring Boot] render 로 무료 호스팅 하기 (2) | 2025.03.04 |
---|