[목표]
: DB 연결해보자
sts4 설치부터
gradle, tiles 셋팅까지
하지 않으신 분은 아래 포스팅을 먼저 확인
https://tomhoon.tistory.com/423
hands on sts4 - 설치부터 tiles 기본 셋팅까지
[목표] : tiles를 사용하기 위한 sts4 설치부터 셋팅까지 해본다 1. STS4 설치 STS3은 "web.servlet.view.tiles" 가 지원이 안되는지 계속 오류가 발생하였다. STS4로 설치하자. 설치 경로는 아래와 같다 https://sp
tomhoon.tistory.com
1. gradle로 필요한 라이브러리 가져오기
[build.gradle]
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// tiles
implementation 'org.apache.tiles:tiles-jsp:3.0.8'
implementation 'org.apache.tiles:tiles-core:3.0.8'
implementation 'org.apache.tiles:tiles-servlet:3.0.8'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
// MyBatis 라이브러리 의존성 추가
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
runtimeOnly 'mysql:mysql-connector-java:8.0.25'
}
tasks.named('test') {
useJUnitPlatform()
}
항상 Gradle에
의존성 추가해주면
Refrest를 해주어야 된다.
그래야지 통신을 통해
새로운 의존성을 프로젝트에 불러올 수 있습니다.
2. spring boot 서버와 DB 연결하는 서버셋팅
[application.properties]
server.port=8082
spring.mvc.view.prefix=/WEB-INF/tiles/layouts/
spring.mvc.view.suffix=.jsp
# database
spring.datasource.driver=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/itkey?&serverTimezone=UTC&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.mapper-locations=classpath:/mapper/**/*.xml
3. mapper 셋팅
[mapper.xml]
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mybatis.UserMapper">
<select id="findAll" resultType="HashMap">
select * from sample_board_tb;
</select>
</mapper>
주의할 점은
mapper namespace는
mapper로 만들어놓은 인터페이스 파일의
패키지 경로 + 파일명이다.
4. MyBatisConfig 셋팅
[MyBatisConfig.java]
package com.example.demo.mybatis;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
//패키지명
@MapperScan(value = "com.example.demo.mybatis", sqlSessionFactoryRef = "SqlSessionFactory")
public class MyBatisConfig {
@Value("${spring.datasource.mapper-locations}")
String mPath;
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "SqlSessionFactory")
public SqlSessionFactory SqlSessionFactory(@Qualifier("dataSource") DataSource DataSource, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(DataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources(mPath));
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "SessionTemplate")
public SqlSessionTemplate SqlSessionTemplate(@Qualifier("SqlSessionFactory") SqlSessionFactory firstSqlSessionFactory) {
return new SqlSessionTemplate(firstSqlSessionFactory);
}
}
getResources에 오류가 뜬다면
import를 잘 확인하시길 바랍니다
>> import org.springframework.context.ApplicationContext
위 라이브러리를 불러와야 합니다.
5. DTO, Service, Mapper 쿼리 조회와 데이터 가져오는 로직 만들기
[ResponseDTO.java]
package com.example.demo.mybatis;
public class ResponseDTO {
String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
[UserService.java]
package com.example.demo.mybatis;
import java.util.ArrayList;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public ArrayList<HashMap<String, Object>> findAll() {
return userMapper.findAll();
}
}
인터페이스입니다 조심하세요
[UserMapper.java]
package com.example.demo.mybatis;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface UserMapper {
ArrayList<HashMap<String, Object>> findAll();
}
마지막. 테스트 해보기
원하는 Controller에
1. Service를 Import 한다.
2. Service에 등록한 메소드인 "findAll()" 를 불러온다.
테스트 DB 안에는
1,2,3,4 값이 있습니다.
STS4 에서 조회결과를 찍은 값
'데일리 공부 기록' 카테고리의 다른 글
sts4 - git 프로젝트 import한 거 지우고 다시 받기 (0) | 2023.06.14 |
---|---|
hands on sts4 - rest api 메소드 생성 후 postman으로 테스트하기 (0) | 2023.06.12 |
hands on sts4 - 설치부터 tiles 기본 셋팅까지 (0) | 2023.06.05 |
Spring - lombok이 안먹히는 오류 해결 (0) | 2023.05.06 |
hands on springsecurity - 실습을 위한 셋팅 (0) | 2023.05.05 |