728x90
반응형
1. 개요
- Maria DB에 테이블을 만든다.
- IntelliJ로 패키지와 java class를 만든다.
- test 패키지와 @Test 어노테이션으로 메소드를 실행해본다.
2. 코드
2.1 SQL 코드
#tbl_todo 테이블 만들기
create table tbl_todo
(
tno int auto_increment primary key,
title varchar(100) not null,
dueDate Date not null,
finished tinyint(1) default 0 #0,1만 입력할 수 있도록 한다.
);
#tbl_todo에 자료 추가하기
insert into tbl_todo(title, dueDate, finished)
values ('Test.....title', '2024-04-23', 0);
#tbl_todo 테이블 불러오기
select * from tbl_todo;
#tbl_todo 자료 삭제하기
delete from tbl_todo where tno = 7;
2.2 java class
- ConnectionUtil 클래스에 연결 관련 코드를 작성한다.
public enum ConnectionUtil {
INSTANCE;
private HikariDataSource ds; //array 대신에 사용할 예정
ConnectionUtil() {
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.mariadb.jdbc.Driver");
config.setJdbcUrl("jdbc:mariadb://localhost:3309/webdb");
config.setUsername("유저명");
config.setPassword("비밀번호");
config.addDataSourceProperty("cachePrepStmts", "true"); //preparedstatement를 사용하겠다.
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
ds = new HikariDataSource(config);
}
public Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
- TodoVO에 데이터베이스 속성값을 갖는 클래스를 만든다.
@Builder //클래스를 생성할 필요가 없다. 미리 만들어준다. TodoVO.builder().~~.build();
@Getter //setter를 사용할 수 없고 getter만 사용 가능하다.
@ToString
public class TodoVO {
private Long tno;
private String title;
private LocalDate dueDate;
private boolean finished;
}
- 어노테이션 @Builder와 @Getter @ToString은 생소하다.
- TodoDAO에 데이터 테이블을 활용하는 메소드를 만들어준다.
public class TodoDAO {
public String getTime(){
String now = null;
try(Connection conn = ConnectionUtil.INSTANCE.getConnection();
PreparedStatement pstmt = conn.prepareStatement("select now()");
ResultSet rs = pstmt.executeQuery();
){
rs.next();
now = rs.getString(1);
}catch(SQLException e){
e.printStackTrace();
}
return now;
}
public void insert(TodoVO todoVO){
try(Connection conn = ConnectionUtil.INSTANCE.getConnection();
PreparedStatement pstmt = conn.prepareStatement("insert into tbl_todo(title, dueDate, finished) values (?, ?, ?);")){
pstmt.setString(1, todoVO.getTitle());
if (todoVO.getDueDate() != null) {
// LocalDate를 java.sql.Date로 변환
Date dueDate = Date.valueOf(todoVO.getDueDate());
pstmt.setDate(2, dueDate);
} else {
pstmt.setNull(2, Types.DATE); // dueDate가 null이라면 NULL을 설정
}
pstmt.setInt(3, todoVO.isFinished() ? 1 : 0);
pstmt.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}
}
}
- getTime 메소드는 현재 시간을 문자열로 반환해준다.
- insert 메소드는 todoVO를 매개변수로 받아 테이블에 자료를 추가해준다.
- IntelliJ에선 test폴더 하위 폴더인 java 폴더에 @Test를 사용해 미리 메소드를 테스트해 볼 수 있다.
- 어썰션을 사용하면 해당 메서드가 실행되었는지 완료여부도 확인할 수 있다.
public class TodoDAOTests {
private TodoDAO todoDAO;
@BeforeEach //이 클래스가 호출되어 메소드가 실행되기 전에 이 부분을 미리 해라.(객체 인스턴스를 만들어라)
public void ready(){
todoDAO = new TodoDAO();
}
@Test
public void testTime() throws Exception{
String time = todoDAO.getTime();
System.out.println(time);
}
@Test
public void testInsert() throws Exception{
TodoVO todoVO = TodoVO.builder().tno((long)27).title("qqqqqqqqq1233111").dueDate(LocalDate.of(2024,04,11)).finished(true).build();
todoDAO.insert(todoVO);
}
}
- TodoVO는 @Builder @Getter @ToString 어노테이션이 있어서 builder() 로 초기화해 객체를 생성해준다.
- @Test가 있는 메소드는 옆에 초록색 재생 버튼이 생성되어 해당 버튼을 누르면 메소드를 실행시켜준다.
- 테이블에 들어가 값이 추가되었는지 확인할 수 있다.
댓글