1. 인텔리제이 깃허브 연결
단축키(Ctrl + Shift + A)를 눌러 Action창을 실행합니다.
share project on github를 검색합니다.
처음에 로그인화면이 나타날수도있습니다. 그러면 본인의 깃허브 아이디와 비밀번호를 입력하여 로그인합니다.
깃허브 저장소 이름입니다. 일반적으로는 프로젝트이름을 깃허브저장소와 동일하게 사용합니다.
share를 클릭합니다.
커밋메시지를 입력하고 add를 클릭합니다.
본인의 깃허브 계정으로 들어가면 추가된것을 확인할 수 있습니다.
2.데이터베이스(mysql) 연결&JPA연동
1)mysql연동
mysql에서 데이터베이스를 만듭니다. 저는 springboot라는 데이터베이스를 생성했습니다.
우측 Database를 클릭하면 데이터베이스를 연결할 수 있는 화면이 나타납니다.
mysql을 클릭하면 아래와 같은 화면이 나타납니다.
위 내용에서
name은 인텔리제이에서 설정하는 데이터베이스 이름입니다. 아무렇게나 지어도 됩니다.
user는 mysql설치할때 만들었던 이름입니다. 기본값은 root입니다.
password는 mysql비밀번호입니다.
database는 데이터베이스명 입니다.
빨간색 네모박스를 클릭하면 접근 가능한 데이터베이스인지 알 수 있습니다.
체크표시가 되어있어야 정상이라는 뜻입니다.
ok를 클릭하면 데이터베이스가 연결됩니다.
2) JPA 연동
application.yml 파일을 생성합니다.
파일 위치는 application.properties 와 동일합니다.
아래코드를 입력합니다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/데이터베이스명?serverTimezone=UTC&characterEncoding=UTF-8
username: root #기본은 root입니다.
password: 1111 #데이터베이스 비밀번호입니다
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
# open-in-view: false
show-sql: true
hibernate:
format_sql: true
# ddl-auto: create ## 이 기능은 스프링이 구동할대마다 데이터베이스를 초기화하고 새로 생성합니다. 실제 프로젝트에서는 지우는게 좋습니다.
logging:
level:
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
생성한 데이터베이스와 비밀번호를 확인합니다. 이러면 연동이 끝났습니다.
application.properties을 사용하시는 분들은 아래와 같이 입력하면됩니다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스명?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1111
3) 연동 테스트
우선 Member 클래스를 만들겠습니다.
Member.java
package com.temswin.web.domain;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import javax.persistence.*;
@NoArgsConstructor
@Data
@Entity
@Table(name="member")
public class Member {
@Id
private String m_id;
@Column
private String m_pass;
@Column
private String m_name;
@ColumnDefault("1")
private int m_level;
}
repository는 모델과 동일한 패키지 안에 있어야합니다.
인터페이스
MemberRepository.java
package com.temswin.web.domain;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
public interface MemberRepository extends JpaRepository<Member,String> {
@Query("select count(m) from Member m where m.m_id = :m_id AND m.m_pass = :m_pass")
int countId(String m_id,String m_pass);
}
준비는 끝났으니 테스트를 해보겠습니다.
MemberTest.java
package com.temswin.web.domain;
import org.aspectj.lang.annotation.After;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@SpringBootTest
@ExtendWith(SpringExtension.class) //스프링부트 2.7이상에서는 RunWith가 잘 안되네요 ExtendWith는 RunWith와 동일한 기능을 합니다.
class MemberTest {
@Autowired
MemberRepository repository;
@Test
public void cleanAll() throws Exception{
repository.deleteAll();
}
@Test
public void Test() throws Exception{
Member member = new Member();
member.setM_id("aaaa");
member.setM_pass("1111");
member.setM_name("admin");
member.setM_level(1);
repository.save(member);
}
@Test
public void findAll() throws Exception{
Long count = repository.count();
System.out.println(count);
}
}
데이터베이스만 만들고 테이블을 만들지않아도 자동생성되는것을 확인할 수 있습니다.
데이터베이스 값도 정상적으로 들어갑니다.
3. 스프링부트에서 마이바티스 사용하기
디렉토리 구조
마이바티스를 사용하기위해서는 설정을 추가해야합니다.
application.yml 또는 application.properties에 아래 코드를 추가합니다.
mybatis:
mapper-locations: classpath:/mapper/*.xml
MmeberMapper 인터페이스
package com.temswin.web.mapper;
import com.temswin.web.domain.Member;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MemberMapper {
public int count(Member member) throws Exception;
}
sql-member.xml
<?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.temswin.web.mapper.MemberMapper">
<select id="count" resultType="int" >
<![CDATA[
select count(*) from member where m_id = #{m_id} and m_pass=#{m_pass}
]]>
</select>
</mapper>
인터페이스의 함수명과 xml파일의 id가 동일해야 합니다.
이제 테스트를 해보겠습니다.
MemberMapperTest.java
package com.temswin.web.mapper;
import com.temswin.web.domain.Member;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
@ExtendWith(SpringExtension.class)
class MemberMapperTest {
@Autowired
MemberMapper mapper;
@Test
public void mapperTest() throws Exception{
Member m = new Member();
m.setM_id("aaaa");
m.setM_pass("1111");
int count = mapper.count(m);
System.out.println("로그인 가능여부: "+count);
}
}
현재 데이터베이스에 데이터베이스가 없어 0건으로 나타납니다.
'JAVA Programming > SpringBoot' 카테고리의 다른 글
[SPRINGBOOT] @PathVariable과 @RequestParam의 차이 (0) | 2024.12.13 |
---|---|
[SPRINGBOOT] ObjectMapper (1) | 2024.12.13 |
[SPRINGBOOT] 스케줄링 (1) | 2024.12.12 |
[SPRINGBOOT] 프로젝트 생성 (0) | 2024.12.12 |