#35 springboot: auto config - db config
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package hello.config;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
import org.springframework.transaction.TransactionManager;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@Slf4j
|
||||
@Configuration
|
||||
public class DbConfig {
|
||||
|
||||
@Bean
|
||||
public DataSource dataSource() {
|
||||
log.info("dataSource 빈 등록");
|
||||
HikariDataSource dataSource = new HikariDataSource();
|
||||
dataSource.setDriverClassName("org.h2.Driver");
|
||||
dataSource.setJdbcUrl("jdbc:h2:mem:test");
|
||||
dataSource.setUsername("sa");
|
||||
dataSource.setPassword("");
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TransactionManager transactionManager() {
|
||||
log.info("transactionManager 빈 등록");
|
||||
return new JdbcTransactionManager(dataSource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcTemplate jdbcTemplate() {
|
||||
log.info("jdbcTemplate 빈 등록");
|
||||
return new JdbcTemplate(dataSource());
|
||||
}
|
||||
}
|
||||
14
springboot/autoconfig/src/main/java/hello/member/Member.java
Normal file
14
springboot/autoconfig/src/main/java/hello/member/Member.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package hello.member;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Member {
|
||||
|
||||
private String memberId;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package hello.member;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class MemberRepository {
|
||||
|
||||
public final JdbcTemplate template;
|
||||
|
||||
public void initTable() {
|
||||
template.execute(
|
||||
"create table member(member_id varchar primary key, name varchar)"
|
||||
);
|
||||
}
|
||||
|
||||
public void save(Member member) {
|
||||
template.update(
|
||||
"insert into member(member_id, name) values (?, ?)",
|
||||
member.getMemberId(), member.getName()
|
||||
);
|
||||
}
|
||||
|
||||
public Member find(String memberId) {
|
||||
return template.queryForObject(
|
||||
"select member_id, name from member where member_id=?",
|
||||
BeanPropertyRowMapper.newInstance(Member.class),
|
||||
memberId
|
||||
);
|
||||
}
|
||||
|
||||
public List<Member> findAll() {
|
||||
return template.query(
|
||||
"select member_id, name from member",
|
||||
BeanPropertyRowMapper.newInstance(Member.class)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package hello.member;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
class MemberRepositoryTest {
|
||||
|
||||
@Autowired
|
||||
MemberRepository memberRepository;
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
void memberTest() {
|
||||
Member member = new Member("idA", "memberA");
|
||||
memberRepository.initTable();
|
||||
memberRepository.save(member);
|
||||
|
||||
Member findMember = memberRepository.find(member.getMemberId());
|
||||
|
||||
assertThat(findMember.getMemberId()).isEqualTo(member.getMemberId());
|
||||
assertThat(findMember.getName()).isEqualTo(member.getName());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user