spring

[스프링 프로젝트] 인스타그램 - 데이터베이스 (MySQL)

고줭 2021. 5. 4. 19:09

두 번째로 데이터베이스를 보여드릴까 합니다.

이렇게 4개 정도 만들었습니다.

익숙한 카멜케이스로 적었는데 알고보니 데이터베이스는 스네이크케이스를 사용한다고 합니다.
camelCase -> snake_case

각 테이블마다 고유 index값과 reg_date를 넣었습니다. 쓰던 안쓰던 필요하다고 생각했기 때문입니다.

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@Data
public class MemberVO {
	
	private int memberNo;
	private String email;
	private String userName;
	private String password;
	private String imageName;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
	private Date regDate;
}
<?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="com.kojoo.mapper.memberMapper">	
	<select id="login" resultType="com.kojoo.vo.MemberVO">
		SELECT 
		  member_id AS memberNo, 
		  email, 
		  user_name AS userName, 
		  password, 
		  date_format(reg_date, '%Y-%m-%d %H:%m:%s') AS regDate, 
		  image_name AS imageName 
		FROM 
		  members 
		WHERE 
		  (
		    email = #{email} OR user_name = #{userName}
		  ) AND password = #{password}

	</select>
	
	<insert id="register">
		INSERT INTO members
		(
			email, 
			user_name, 
			password
		) 
		VALUES 
		( 
			#{email}, 
			#{userName}, 
			#{password}
		)
	</insert>
	
	<select id="read" parameterType="com.kojoo.vo.MemberVO" resultType="com.kojoo.vo.MemberVO">
		SELECT 
			email, 
			user_name AS userName, 
			reg_date AS regDate, 
			image_name AS imageName 
		FROM 
			members 
		WHERE
		(
			email = #{email}, 
			userName = #{userName}
		)
	</select>
</mapper>

이 부분에서 아쉬운것은 비밀번호를 암호화 하지 않은것과 전 포스팅에서 말한것처럼 email or username으로 로그인 구현을 못한것입니다.
혹시나 고쳐져야 할 부분이 보인다면 댓글로 알려주시면 감사하겠습니다.


이 부분에서 주목해서 봐야할건 아무래도 image_name이라 생각합니다.
첨에는 mysql자체에 BLOB 형태로 저장을 하려고 했지만 이해하는데도 큰 문제가 있었을 뿐더러 경로를 저장하는것이 데이터 베이스를 조회할 때 메모리적으로도 좋다고 했기에 varchar형식으로 이미지 이름만 가져다가 넣고 jsp에서 불러올때는
"저장되는 이미지경로 + 이미지이름" 을 해서 가져오게했습니다.
ex) /resources/images/profile_image.jpg

지금 다시보니 프로필사진은 제가 직접 데이터베이스에 입력을해서 했네요..
프로필사진을 사이트내에서 변경, 삭제 하도록 수정 해야겠네요...ㅠ