: 처음 프로젝트를 생성할 때 추가했던 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);
}
}
<?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>
@Mapper : xml에 namespace와 매핑
@Repository : 메서드명과 xml에 각 id와 매핑
@Mapper
@Repository
public interface MemberDao {
List<MemberDto> allMember(); // id와 이름이 반드시 같아야 함
}
@Transactional : 선언적 트랜잭션. 해당 범위 내 메서드가 트랜잭션이 되도록 보장
@Service
@Transactional
public class MemberService {
@Autowired
MemberDao dao;
public List<MemberDto> allMember() { // id와 일치하지 않아도 됨
return dao.allMember();
}
}
@RestController
public class MemberCotroller {
@Autowired
MemberService service;
@GetMapping("/allList")
public List<MemberDto> allList() {
System.out.println("MemberCotroller allList " + new Date());
return service.allMember(); // list로 리턴
}
}