๐ข ๋ค์ด๊ฐ๊ธฐ ์ ์
- ์ด๋ฒ ํฌ์คํ ์์ Spring Boot + MyBatis + MySql ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณธ๋ค.
- Intellij Community ์์ ์งํํ๋ค. ๋ค๋ฅธ IDE๋ฅผ ์จ๋ ์๊ด ์๋ค.
- Spring Boot ๊ฐ ์ค์น๋ ํ๊ฒฝ์์ ์งํํ๋ค. Spring Boot ์ค์น๋ฒ์ ์ง๋ ํฌ์คํ ์ ์ฐธ์กฐ. (Nuxt.js + Spring Boot ์ฐ๋๋ฒ ํฌ์คํ ์ด์ง๋ง Spring Boot ์ค์น์ ๋ํด์๋ ๋ค๋ฃจ๊ณ ์๋ค.)
๐งฑ MySQL, MyBatis Dependency ์ฃผ์
pom.xml
์ dependencies
์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ์.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
mysql-connector-java
- JAVA ๊ฐ MySQL๊ณผ ํต์ ํ ์ ์๊ฒํ๋ ๋๋ผ์ด๋ฒ
mybatis-spring-boot-starter
- Spring Boot ์ฉ Mybatis
์ ์์กด์ฑ์ ๋ํ ๋ฒ์ ์ Maven Repository์์ ํ์ธํ ์ ์๋ค.
์ํ๋ ์์กด์ฑ์ ๊ฒ์ ํ ์ต์ , ํน์ ๋ณดํธ์ ์ธ ๋ฒ์ ์ ์์กด์ฑ ์ฃผ์ ์ฝ๋๋ฅผ ๋ณต์ฌํด ๋ถ์ฌ ๋ฃ์ผ๋ฉด ๋๋ค.
๐งฑ MySQL ์ฐ๊ฒฐ ํ ์คํธ
DB ์ฐ๊ฒฐ์ ์์ DB๊ฐ ์ ๋๋ก ์ฐ๊ฒฐ๋ ์ง ํ ์คํธ ๋จผ์ ํด๋ณด์.
ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด pom.xml
์ ์๋ dependency
๋ฅผ ์ถ๊ฐํด์ฃผ์.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
spring-boot-starter-test
- Spring์ ์์ ๊ฐ์
spring-boot-starter-test
์์กด์ฑ์ ํตํด TEST ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. - ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด
JUnit
๋ฑ์ ํ์ฉํ ์ ์๋ค. - ์์ธํ
- Spring์ ์์ ๊ฐ์
src
ํด๋ ๋ด์ test
๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ,test
ํด๋ ๋ด์ package
๋ฅผ ๋ง๋ ํ ์๋ฐ ํ์ผ์ ์์ฑํ์.
๋๋ MySQLConnectionTest.java
๋ผ๋ ํ์ผ์ ๋ง๋ค์ด ์คฌ๋ค.
package dbTest;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
public class MySQLConnectionTest {
// MySQL Connector ์ ํด๋์ค. DB ์ฐ๊ฒฐ ๋๋ผ์ด๋ฒ ์ ์
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
// DB ๊ฒฝ๋ก
private static final String URL = "jdbc:mysql://localhost:3306/๋ฐ์ดํฐ๋ฒ ์ด์ค?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false";
private static final String USER = "์ ์ ID";
private static final String PASSWORD = "๋น๋ฐ๋ฒํธ";
@Test
public void testConnection() throws Exception {
// DBMS์๊ฒ DB ์ฐ๊ฒฐ ๋๋ผ์ด๋ฒ์ ์์น๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํ ๋ฉ์๋
Class.forName(DRIVER);
try {
Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
System.out.println(connection);
} catch (Exception e) {
e.printStackTrace();
}
}
}
MySQLConnectionTest.java
์ ์์ ๊ฐ์ ์ฝ๋๋ฅผ ์
๋ ฅํด์คฌ๋ค.try
๋ถ๋ถ์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด, DB ์ปค๋ฅ์
์ด ์ ๋๋ก ์์ฑ๋์๋์ง๋ฅผ ์ถ๋ ฅํด ํ์ธํด๋ณด๋ ๊ณผ์ ์ด๋ค.
allowPublicKeyRetrieval
- ํด๋ผ์ด์ธํธ ์ต์ ์ ์ถ๊ฐ ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ ์๋์ผ๋ก ๊ณต๊ฐ ํค๋ฅผ ์์ฒญํ ์ ์๋๋ก ํ๋ค.
- default๋
false
- MySQL 8.0 ์ด์์ ์ด๋ฅผ
true
๋ก ์ง์ ํ์ง ์์ ์public key retrieval is not allowed
์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
userSSL
- default๋ `true
false
๋ก ์ง์ ์ SSL ์ฌ์ฉ์ ๋ง์ ์ ์๋ค.- ํ์ง๋ง ๊ฐ๋ฐ, ํน์ ํ ์คํธ ์ค์์๋ง ๋นํ์ฑํ ์ํค๋ ๊ฑธ ์ถ์ฒ
- ๋ฐฐํฌ ์์
useSSL
๋ฅผfalse
๋ก ์ง์ ํ๊ธฐ๋ณด๋จSSL
์ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
TEST ์ฝ๋๋ฅผ ์คํ์์ผ๋ณด๋ฉด com.mysql.cj.jdbc.ConnectionImpl@~
๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋ฐ ๊ฒ์ด๋ค.
DB ์ฐ๊ฒฐ์ ์ฑ๊ณตํ๋ค๋ ์๋ฏธ๋ค! ๐
๐งฑ Spring Boot + MyBatis + MySQL ์ฐ๊ฒฐ
DB ์ฐ๊ฒฐ ํ ์คํธ๋ฅผ ์๋ฃํ์ผ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก DB ์ฐ๊ฒฐ์ ํด๋ณด์
/src/main/resources/
๋ด์ application.properties
ํ์ผ์ ์์ฑํ์ฌ DB Connection ์ ์ํ DB ์ ๋ณด๋ฅผ ์์ฑํ์.
ํ ์คํธ์์ ์ ๋ ฅํ๋ ์ ๋ณด์ ๋์ผํ๋ฉด ๋๋ค.
๐ application.properties
์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ์ฌ๋ฌ๊ฐ์ง ์ค์ ๊ฐ๋ค์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ด๋ ์์ ์ ์ํ ์ ์๋ ๊ธฐ๋ฅ
์ด ํ์ผ์ ์คํ๋ง ๋ถํธ๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ ๋ ์๋์ผ๋ก ๋ก๋ฉํ๋ ํ์ผ์ด๋ค.
key - value ํ์์ผ๋ก ๊ฐ์ ์ ์ํ๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๊ฐ์ ์ฐธ์กฐํ ๋ @Value ๋ฑ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
spring.datasource.username=MySQL ์ ์ ์ด๋ฆ
spring.datasource.password=MySQL ๋น๋ฐ๋ฒํธ
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
?serverTimezone=UTC&allowPublicKeyRetrieval=true
src/main/resources/application.properties
์ด์ Datasource
์ค์ ์ ํด์ค ๊ฒ์ด๋ค.
Datasource
- ์ปค๋ฅ์ ํ์ ์ปค๋ฅ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ฒด
- ์ด ๊ฐ์ฒด๋ฅผ ํตํด ์ปค๋ฅ์ ์ ํ๋ ๋ฐ๋ฉ ๋ฑ์ ์์ ์ ํ๋ค.
๐ ์ปค๋ฅ์ ํ
๊ธฐ์กด JDBC๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ด ์์๋๋ง๋ค DB ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด Connection ๊ฐ์ฒด๋ฅผ ์ป์ (์ข์ง ์๋ ์ฑ๋ฅ์ด์์)
๊ธฐ์กด์ ๋ถํธํจ์ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ.
Connection ๊ฐ์ฒด๋ฅผ ์์ฒญ๋๋ง๋ค ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์๋น์ค ๋๊ธฐ ์ ์ ์๋ฒ์์ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ ์ค๋นํ ๋ค์ ํ์ํ ๋ ๊ฐ์ ธ๋ค ์ฐ๊ฒ ํ๋ค.
src/main/java/ํจํค์ง/config
๋ด์ DataSourceConfig.java
๋ฅผ ์์ฑํ๊ณ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
@Configuration
public class DataSourceConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
src/main/java/com/project/mong/config/DataSourceConfig.java
@Configurtion
- ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ์ ๋์
- ์ด ์ด๋
ธํ
์ด์
์ ๋ถ์ด๊ณ ํด๋์ค ๋ด์ ํ๋ ์ด์์
@Bean
๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ์คํ๋ง ์ปจํ ์ด๋๊ฐBean
์ ์๋ฅผ ์์ฑํ๊ณ ๋ฐํ์ ์ ๊ทธBean
๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ ๊ฒ์ ์ ์ธํ๋ค.
@ConfigurationProperties
- ์์ ์ค๋ช
ํ๋ ์ธ๋ถ ์ค์ ํ์ผ(
application.properties
)์ ์ฐธ์กฐํ ๋ ์ฐ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.(ex.@Value
) application.properties
์key
๋ฅผ ๊ฐ์ ๊ฐ์ผ๋ก ์์ํ๊ฒ ๊ตฌํํด๋๋ฉด(์ ๋์ด), ์ด๋ฅผ ๋ฌถ์ด์Bean
์ผ๋ก ๋ฑ๋กํ ์ ์๋ค. (์ฌ๊ธฐ์spring.datasource
๋ก ๊ตฌํํด๋์)- ์ฆ, ์ ์ฝ๋์ฒ๋ผ
prefix = "spring.datasource"
๋ผ๊ณ ํ๋ฉดspring.datasource
๊ฐ ์ ๋์ด๋ก ๋ถ์ด ์๋application.properties
๊ฐ๋ค์ ์ฐธ์กฐํ ์ ์๋ค. - ์ด ์ด๋
ธํ
์ด์
์
@Bean
์ด ๋ถ์ ๋ฉ์๋์ ๋ถ์ฌ์ฃผ๋ฉด ์จ๋ํํฐ ์ปดํฌ๋ํธ(์ฌ๊ธฐ์Datasource
) ์ ๋ฐ์ธ๋ฉ์ ํ ์ ์๋ค. - ์ฆ,
Datasource
๊ฐapplication.properties
์spring.datasource
๋ก ์์๋๋ ๊ฐ๋ค์ ์ฐธ์กฐํด์ ์ด๋ค๋ ๊ฒ์ด๋ค.
- ์์ ์ค๋ช
ํ๋ ์ธ๋ถ ์ค์ ํ์ผ(
๐ ์จ๋ํํฐ ์ปดํฌ๋ํธ
3rd Party
ํ๋ก๊ทธ๋๋ฐ์ ๋์์ฃผ๋ ํ๋ฌ๊ทธ์ธ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํ์ฌ ํ ์ธ์ ์ธ์ ์ 3์๊ฐ ๊ฐ๋ฐํ ๋๊ตฌ
์ฐธ๊ณ ๋ก application.properties
์ ConfigurationProperties
์กฐํฉ์ ์ฐ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ด ๊ตฌํํด์ค ์๋ ์๋ค.
@Bean
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username("MySql ์ ์ ์ด๋ฆ")
.password("MySql ๋น๋ฐ๋ฒํธ")
.url("MySql ๊ฒฝ๋ก")
.driverClassName("com.mysql.cj.jdbc.Driver")
.build();
}
์ด์ ์์ ์ค์ ํด์ค DataSource
๋ฅผ ์ฐธ์กฐํด MyBatis
์ Mysql
์ ์ฐ๊ฒฐํ๋ ์์
์ ํ ๊ฒ์ด๋ค.
src/main/java/ํจํค์ง/config
๋ด์ MySQLConfig.java
๋ฅผ ์์ฑํ๊ณ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
@Configuration
@MapperScan ("com.project.mong.dao")
public class MySQLConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mappers/*.xml"));
Resource myBatisConfig = new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml");
sessionFactory.setConfigLocation(myBatisConfig);
return sessionFactory.getObject();
}
}
src/main/java/com/project/mong/config/MySQLConfig.java
@MapperScan
- ์ฐ๊ฒฐํ DAO ์ธํฐํ์ด์ค๋ฅผ ๋ด์ ํจํค์ง๋ฅผ ๋ฑ๋กํ๋ค.
@MapperScan(basePackages = {"com.project.mong.dao"})
๋ผ๊ณ ์ ์ํ ์๋ ์๋ค.
SqlSessionFactory
- MySql๊ณผ MyBatis๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฐ์ฒด
SqlSessionFactoryBean
SqlSessionFactory
๋ฅผ ์์ฑํด์ฃผ๋ ํด๋์คsetDataSource()
- ์์ ์ ์ํ
datasource
๋ฅผ ์ฐธ์กฐํ๊ฒ ํ๋ค.
- ์์ ์ ์ํ
PathMatchingResourcePatternResolver
resource
์์น ๊ฒ์์ ๋๋ Spring classgetResources()
๋ก ๊ฒฝ๋ก ๊ฒ์์ ํดSqlSessionFactory
์mapper
์mybatis-config
๋ฅผ setํด์ค๋ค.
classpath
resource
ํด๋๋ฅผ ๋ํ๋
์ฌ๊ธฐ์ ์ธ๊ธํ mybatis-config
๋ ๋ง ๊ทธ๋๋ก Mybatis ์ค์ ํ์ผ์ด๋ค.
์์ด๋ ๊ด์ฐฎ์ ํ์ผ์ด์ง๋ง Mybatis ์ค์ ์ ์ํด ์์ฑํด์ฃผ๋ ํธ์ด ์ข๋ค.
๋๋ resource
ํด๋ ์๋์ mybatis-config.xml
์ ์์ฑํ๊ณ ์๋์ ๊ฐ์ด ์
๋ ฅํด์คฌ๋ค.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="callSettersOnNulls" value="true"/>
</settings>
</configuration>
src/main/resources/mybatis-config.xml
mapUnderscoreToCamelCase
- Mybatis์ DTO(VO) ๋ฆฌํด ๊ฐ์ Camel Case๋ก ๋ณํ์ํด
callSettersOnNulls
- ResultType ์ด HashMap ์ผ ๋ ๊ฐ์ด
null
์ธ ๊ฒ์ด ๋๋ฝ๋์ด ๋์ค๋๋ฐ,null
์ ํฌํจ์์ผreturn
ํ๊ฒ ํ๋ค.
- ResultType ์ด HashMap ์ผ ๋ ๊ฐ์ด
์ด ์ธ์๋ ์ฌ๋ฌ ์ธํ ์ ์ถ๊ฐ์ํฌ ์ ์๋ค.
๐งฑ Spring Boot + MyBatis + MySQL ์ฐ๊ฒฐ ํ์ธ ์์
MySQL ์ MyBatis๊ฐ ์ ๋๋ก ์ฐ๊ฒฐ๋์๋์ง ํ์ธํด๋ณด์
์ค์ ํด ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ํ
์ด๋ธ์ create
ํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ๋ฃ์ด์คฌ๋ค.
create table DB_TEST (
title varchar(20),
name varchar(20)
);
insert into DB_TEST values (
'DB ์ฐ๊ฒฐ ํ
์คํธ ์
๋๋ค.', 'TEST'
);
DB์ ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ด๊ฐ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์ด์ ์ด ๊ฐ์ ๋ถ๋ฌ์ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์ง ์ค๊ฒ์ด๋ค.
public class TestDTO {
String title;
String name;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/src/main/java/ํจํค์ง/dto/TestDTO.java
๊ฐ์ ธ์ฌ DTO(์ปฌ๋ผ)์ ์์ฑํด์ฃผ์
DTO ๋ Data Transfer Object์ ์ค์๋ง๋ก ์ปจํธ๋กค๋ฌ๋ ๋งคํผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค.
DB ๋ด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ์ ์ํ๋ ๊ฒ์ด๋ค.getter
๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์ ์๋ฌ๊ฐ ์๊ธฐ๋ getter
, setter
๋ฅผ ๊ผญ ์์ฑํด์ฃผ์
lombok๋ฅผ ์จ๋ ์๊ด ์๋ค.
๋ค์์ผ๋ก ๊ฐ์ ธ์ฌ MyBatis ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ค๋ค
MyBatis๋ ์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฌธ์ ์ง๊ด์ ์ผ๋ก ๋ณผ ์ ์๋๊ฒ ์ฅ์ ์ด๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.project.mong.dao.TestDAO">
<select id="getTestData" resultType="com.project.mong.dto.TestDTO">
select
title,
name
from
DB_TEST
</select>
</mapper>
src/main/resources/mappers/TestMapper.xml
MyBatis mapper ํ์ผ์ ๋ค๋ฅธ ์๋ฐ ํ์ผ๊ณผ ๋ฌ๋ฆฌ resources
ํด๋ ๋ด์ ์์นํ๋ค
์ด๋ ์ฐ๋ฆฌ๊ฐ MySQLConfig
ํ์ผ์์ ์ด ๊ฒฝ๋ก์ mapper ํ์ผ์ ๋ฃ๊ฒ ๋ค๊ณ ์ค์ ํด ์คฌ์๋ค.
sessionFactory.setMapperLocations(resolver.getResources("classpath:mappers/*.xml"));
์ฌ๊ธฐ์ classpath
๋ /src/main/resources
๋ฅผ ์๋ฏธํ๋๋ฐ, Interllij ๊ฐ์ ๊ฒฝ์ฐctrl
+ shift
+ alt
+ s
๋๋ File
- Project Structure
์์Modules
- Sources
๋ถ๋ถ์์ ์ฝ๊ฒ ์ค์ ๊ฐ๋ฅํ๋ค.classpath
๋ก ๋๊ณ ์ํ๋ ํ์ผ์ ์ ํ ํ Mark as:
๋ฅผ Resources
๋ก ์ ์ฉํด์ฃผ๋ฉด ๋๋ค.
์๋ง ๊ธฐ๋ณธ์ ์ผ๋ก /src/main/resources
๊ฐ classpath
๋ก ์ค์ ๋์ด ์์ ๊ฒ์ด๋ค.
์ ์ฝ๋์์ ์ฃผ๋ชฉํด์ผํ ์ ์ namespace
์ด๋ค.namespace
์ ์ด mapper ํ์ผ๊ณผ ์ฐ๋๋ DAO๋ฅผ ์ ์ธํด์ฃผ๋ฉด ๋๋ค.
DAO๋ Data Access Object์ ์ฝ์๋ก, DB์ ์ ๊ทผํ ์ธํฐํ์ด์ค๋ค์ด ์ ์ธ๋ ๊ฒ์ด๋ค.
package com.project.mong.dao;
import com.project.mong.dto.TestDTO;
import java.util.List;
public interface TestDAO {
List<TestDTO> getTestData();
}
src/main/java/com/project/mong/dao/TestDAO.java
List<TesDTO>
์ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ์ง์คฌ๋ค.
์ด๋ ์ธํฐํ์ด์ค ๋ด์ ์ ์๋์ด mapper์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก mapper์ getTestData
์ ๋ฉ์๋ ๋ช
์ด
๋์ผํด์ผํ๋ค.
๋ค์์ ์ด ๋ฉ์๋๋ฅผ ๋ถ๋ฌ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ค ๊ฒ์ด๋ค.
package com.project.mong.controller;
import com.project.mong.dao.TestDAO;
import com.project.mong.dto.TestDTO;
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.List;
@RestController
@RequestMapping("/api")
public class DBConnectTestCtrl {
@Autowired
private TestDAO testDAO;
@GetMapping("/hello")
public List<TestDTO> HelloWorld() {
return testDAO.getTestData();
}
}
src/main/java/com/project/mong/controller/DBConnectTestCtrl.java
@Autowired
๋ก DAO๋ฅผ ์ฃผ์
ํ๊ณ List<TestDTO>
๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ์ง์คฌ๋ค. ์ด๋ /api/hello
๋ก ์ ๊ทผํ๋ฉด ์คํํ๊ฒ ๋ ๊ฒ์ด๋ค.
DB ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ์ ์์๋ค!๐
์ง๊ธ๊น์ง Spring Boot + MyBatis + MySQL์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค.
ํผ๋๋ฐฑ ๋๊ธ์ ์ธ์ ๋ ํ์์
๋๋ค! ๐ผ
'Spring > Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Boot Maven + Nuxt.js ์ฐ๋ํ๋ ๋ฒ (CORS, Proxy) (1) | 2021.04.02 |
---|