[Spring] Spring Boot(3) - DB

seonjeong·2023년 3월 4일
0

Spring

목록 보기
15/27
post-thumbnail

💖 Back

🔥 pom.xml

: 처음 프로젝트를 생성할 때 추가했던 dependency 이외에 아래의 dependency들을 추가해준다

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.14.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.14.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>3.0.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>3.0.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.11</version>
</dependency>

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.29</version>
</dependency>

🔥 환경에 따른 설정

: application.properties에 DB에 대한 설정을 추가해준다

# db setting
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/mydb?serverTimeZone=Asia/Seoul
spring.datasource.hikari.username=root
spring.datasource.hikari.password=1234

🔥 설정 파일 생성

: DB 설정 파일을 생성해준다 -> Bean 추가

@Configuration	// 설정
@PropertySource("classpath:/application.properties")	// application.properties안에 있는 소스 불러오기
public class DatabaseConfig {
	@Bean
	@ConfigurationProperties(prefix="spring.datasource.hikari")
	public HikariConfig hikariConfig() {
		return new HikariConfig();
	}
	
	@Bean
	public DataSource dataSource() {
		DataSource dataSource = new HikariDataSource(hikariConfig());
		System.out.println("dataSource: " + dataSource);
		return dataSource;
	}
	
	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		System.out.println("DatabaseConfig SqlSessionFactory");
		
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		
		Resource[] arrResources = new PathMatchingResourcePatternResolver().getResources("classpath:sqls/*.xml");	// core-io
		sqlSessionFactoryBean.setMapperLocations(arrResources);
		sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
		
		return (SqlSessionFactory)sqlSessionFactoryBean.getObject();
	}
	
	@Bean
	public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}
}

🔥 mapper, Dao, Service, Controller

  • mapper : xml 생성
<?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="mul.cam.a.dao.MemberDao">
	<select id="allMember" resultType="mul.cam.a.dto.MemberDto">
		select id, pwd, name, email, auth
		from member
	</select>
</mapper>
  • Dao : interface 생성

    @Mapper : xml에 namespace와 매핑
    @Repository : 메서드명과 xml에 각 id와 매핑

@Mapper
@Repository
public interface MemberDao {

	List<MemberDto> allMember();	// id와 이름이 반드시 같아야 함	
}
  • Service : class 생성

    @Transactional : 선언적 트랜잭션. 해당 범위 내 메서드가 트랜잭션이 되도록 보장

@Service
@Transactional
public class MemberService {
	
	@Autowired
	MemberDao dao;
	
	public List<MemberDto> allMember() {	// id와 일치하지 않아도 됨
		return dao.allMember();
	}
}
  • Controller
@RestController
public class MemberCotroller {
	
	@Autowired
	MemberService service;

	@GetMapping("/allList")
	public List<MemberDto> allList() {
		System.out.println("MemberCotroller allList " + new Date());
		
		return service.allMember();		// list로 리턴
	}
}
profile
🦋개발 공부 기록🦋

0개의 댓글

관련 채용 정보