새 프로젝트 생성 - my_board
pom_xml에서 버전 수정 필요
사용 버전
web_xml 한글 인코딩 필터 설정 추가
home.jsp에
UTF-8 추가함.
DB연결 - 테이블 생성
필요한 테이블 board, user,reply 세 개
CREATE TABLE board(
bno int not null auto_increment,
title varchar(50) not null,
id varchar(50) not null,
content text not null,
regDate timestamp not null default now(),
viewCnt int default 0,
primary key(bno),
FOREIGN KEY(id) REFERENCES user(id)
);
CREATE TABLE user(
id varchar(50) not null,
password varchar(50) not null,
regDate timestamp not null default now(),
primary key(id)
);
CREATE TABLE reply (
rno int not null auto_increment,
bno int not null,
id varchar(50) not null,
content text not null,
regDate timestamp not null default now(),
likeCnt int default 0,
PRIMARY KEY(rno, bno),
FOREIGN KEY(bno) REFERENCES board(bno),
FOREIGN KEY(id) REFERENCES user(id)
);
pom.xml - db연결을 위해 설정 추가
<!-- database -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- commons-dbcp2 : 커넥션 풀 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!-- log4jdbc-log4j2-jdbc4 : SQL 실행 시 로그 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<!-- mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
root-context.xml
<!-- 데이터소스에 DB연결 정보를 입력 -->
<bean id="dataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="com.mysql.cj.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/my_board?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="1234" />
</bean>
<!-- MyBatis sql세션팩토리 객체(데이터 소스 주입) 위의 datasource가 주입 됨 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations"
value="classpath:/mappers/**/*.xml" />
</bean>
<!-- sql팩토리 주입하여 sql메서드 실행 객체 -->
<bean id="sqlSessionTemplate"
class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
DB테이블 my_board 입력함 .
sql 쿼리문 작성 할 mappers 폴더 생성 - 만약 폴더 명을 다르게 하고 싶으면 아래의 value 경로 변경 필요
java/resources안에 mappers폴더 생성 후
쿼리문 작성할 xml파일 생성함
각 xml 파일안에 쿼리문을 작성한다고해서 무조건 myBatis사용 가능한것이 아님
아래의 코드 추가 후mapper 안에 작성해야한다.
<?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="board">
</mapper>
mapper namespace는 각 xml 파일의 이름을 나타내는거라
같게 입력하면 같은 xml파일로 인식함. 그래서 이름을 달리 설정한다.
board 쿼리문 작성할 xml파일은 board ,,
user는 user 등
현재는 아직 쿼리문 작성안할거라서 위의 코드만 넣어줌
VO생성
https://kkminseok.github.io/posts/Spring_semina/
VO(Value Object)
각 계층간 데이터 교환을 위한 자바 객체를 의미.
레이어 간에 전달하는 목적을 가지고 있으며, 객체의 속성과 getter, setter만을 가지고 있음.
계층간 데이터 교환을 위한 자바 빈즈(Java Beans)이다.
- 자바 빈즈?
- 자바로 작성된 소프트웨어 컴포넌트들을 지칭하는 단어
- MVC모델 기준 Model이 JavaBeans
- JSP에서도 쓰이는데 JSP문법은 모르니 pass → JSP 파일 내에서 사용이 가능한 객체라고 생각.
즉 DTO는 Database에서 Data를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체.
- VO(Value Object) vs DTO
VO는 DTO와 동일한 개념이지만 read only 속성을 갖음.
VO는 특정한 비즈니스 값을 담는 객체이고, DTO는Layer간의 통신 용도로 오고가는 객체를 말함.
BoardVO
package com.myboard.domain;
import java.util.Date;
public class BoardVO {
// CREATE TABLE board(
// bno int not null auto_increment,
// title varchar(50) not null,
// id varchar(50) not null,
// content text not null,
// regDate timestamp not null default now(),
// viewCnt int default 0,
// primary key(bno),
// FOREIGN KEY(id) REFERENCES user(id)
// );
private int bno;
private String title;
private String text;
private String id;
private String content;
private Date regDate;
private int viewCnt;
//게터 세터
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public int getViewCnt() {
return viewCnt;
}
public void setViewCnt(int viewCnt) {
this.viewCnt = viewCnt;
}
}
ReplyVO
package com.myboard.domain;
import java.util.Date;
public class ReplyVO {
// CREATE TABLE reply (
// rno int not null auto_increment,
// bno int not null,
// id varchar(50) not null,
// content text not null,
// regDate timestamp not null default now(),
// likeCnt int default 0,
// PRIMARY KEY(rno, bno),
// FOREIGN KEY(bno) REFERENCES board(bno),
// FOREIGN KEY(id) REFERENCES user(id)
// );
private int rno;
private int bno;
private String id;
private String content;
private Date regDate;
private int likeCnt;
//getter setter
public int getRno() {
return rno;
}
public void setRno(int rno) {
this.rno = rno;
}
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public int getLikeCnt() {
return likeCnt;
}
public void setLikeCnt(int likeCnt) {
this.likeCnt = likeCnt;
}
}
UserVO
package com.myboard.domain;
import java.util.Date;
public class UserVO {
// CREATE TABLE user(
// id varchar(50) not null,
// password varchar(50) not null,
// regDate timestamp not null default now(),
// primary key(id)
// );
private String id;
private String password;
private Date regDate;
//getter setter
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
}
일단 유저 db에 유저 생성만 해놓음
INSERT INTO user(id,password)
VALUES('user1234',1234);
SELECT * FROM my_board.user;
'BACKEND > Spring' 카테고리의 다른 글
게시판 만들기 2 - 기본 설정 및 include(nav,footer 분리) (0) | 2023.10.26 |
---|---|
게시판 만들기 2 - MVC의 구조 (0) | 2023.10.26 |
게시판 만들기 - 댓글 삭제하기 (0) | 2023.10.25 |
게시판 만들기 - 댓글 수정하기 (0) | 2023.10.25 |
게시판 만들기 - 댓글 작성(write) (0) | 2023.10.25 |