[SPRINGBOOT] 인텔리제이 환경설정

728x90

1. 인텔리제이 깃허브 연결

단축키(Ctrl + Shift + A)를 눌러 Action창을 실행합니다.

 

share project on github를 검색합니다.

 

etc-image-0

 

처음에 로그인화면이 나타날수도있습니다. 그러면 본인의 깃허브 아이디와 비밀번호를 입력하여 로그인합니다.

 

깃허브 저장소 이름입니다. 일반적으로는 프로젝트이름을 깃허브저장소와 동일하게 사용합니다.

 

etc-image-1

share를 클릭합니다.

 

etc-image-2

커밋메시지를 입력하고 add를 클릭합니다.

 

본인의 깃허브 계정으로 들어가면 추가된것을 확인할 수 있습니다.

 

etc-image-3

 

2.데이터베이스(mysql) 연결&JPA연동


1)mysql연동

 

mysql에서 데이터베이스를 만듭니다. 저는 springboot라는 데이터베이스를 생성했습니다.

 

우측 Database를 클릭하면 데이터베이스를 연결할 수 있는 화면이 나타납니다.

 

etc-image-4

 

mysql을 클릭하면 아래와 같은 화면이 나타납니다.

 

etc-image-5

 

위 내용에서

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);
    }



}

 

데이터베이스만 만들고 테이블을 만들지않아도 자동생성되는것을 확인할 수 있습니다.

 

데이터베이스 값도 정상적으로 들어갑니다.

etc-image-6

 

3. 스프링부트에서 마이바티스 사용하기


디렉토리 구조

etc-image-7

마이바티스를 사용하기위해서는 설정을 추가해야합니다.

 

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건으로 나타납니다.

etc-image-8

 

'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