데이터베이스2020. 12. 26. 12:32
728x90

spring boot와 mySQL 연결을 시도 했지만

데이터베이스에 관한 지식이 별로 없어서 성공하지는 못했습니다ㅠㅠ

 

* myBatis 등 mySQL과 웹을 연결하는 프레임워크를 공부할 것

 

더 공부한 뒤 참조하기 위해 글을 남깁니다.

 


* 언어 : spring boot

* 프로젝트 : gradle

* 데이터베이스 : mySQL


 

.domain / Member.java

package DSC4.cafein.domain;

import javax.persistence.*;

@Entity
@Table(name="member")
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private String email;
    private String username;
    private String password;

    public Member() {

    }


    public Member(String username,String password){
        this.email = username;
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

 

 

.repository / MemberRepository.java

package DSC4.cafein.repository;

import DSC4.cafein.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MemberRepository extends JpaRepository<Member,String> {
    Member findByUsernameAndPassword(String username,String password);
}
//public class MemberRepository {
//}

 

 

.service / MemberService.java

package DSC4.cafein.service;

import DSC4.cafein.domain.Member;
import DSC4.cafein.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MemberService {

    @Autowired
    private MemberRepository repo;

    public Member login(String username, String password){
        Member member = repo.findByUsernameAndPassword(username,password);
        return member;
    }
}

 

 

build.gradle

plugins {
	id 'org.springframework.boot' version '2.3.5.RELEASE'
	id 'io.spring.dependency-management' version '1.0.10.RELEASE'
	id 'java'
}

group = 'DSC4'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	runtimeOnly 'mysql:mysql-connector-java'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	//implementation 'android.arch.persistence.room:runtime:1.1.1'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
	implementation 'com.google.firebase:firebase-admin:6.8.1'
	//annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
	compile('org.springframework.boot:spring-boot-starter-data-jpa')
	compile('org.springframework.boot:spring-boot-starter-jdbc')
	compile('mysql:mysql-connector-java')

}

test {
	useJUnitPlatform()
}

-> 사실 여기는 firebase와 mysql코드가 섞여있다.

 

(아래의 코드는 파이어베이스 코드이니 무시 가능)

implementation 'com.google.firebase:firebase-admin:6.8.1'

 

 

반응형
Posted by mminky
데이터베이스2020. 12. 4. 03:05
728x90

(MySQL에 이미 데이터를 넣어놓은 상태입니다.)  참고

* DB명: cafein

* table명: member

 

 

[ php\ php.ini ]

php 디렉토리 내의 php.ini 파일을 수정합니다.

 

;extension=mysqli 이렇게 되어있을텐데

주석 역할을 하는 ; 을 지우고 저장합니다.

extension=mysqli

 

 

아파치 (apache) 서버 재시작 합니다.

cmd창 (관리자 모드)

 

httpd.exe -k restart

 

(소문자 k 입니다)

 

 

 

[ Apache24\htdocs\ 이름.php ]

확인을 위해서 apache24 디렉토리 밑에 htdocs 디렉토리에

이름.php 파일을 생성합니다. (저는 test.php 로 했습니다.)

 

 

.php 파일을 만드는 방법은

더보기

-------------------------(더보기)-------------------------

우선 메모장으로 코드를 입력한 후 저장합니다.

 

그리고 파일탐색기에서

'보기' > '파일확장명'체크 를 합니다.

 

원하는 파일을 선택한 후 이름바꾸기(혹은 F2)를 눌러 확장자를 변경합니다.

 

.txt -> .php

 

-------------------------(더보기)-------------------------

 

 

 

test.php

<?php
$mysql_hostname = 'localhost';
$mysql_username = 'root'; //계정명
$mysql_password = 'password'; //계정 비밀번호
$mysql_database = 'cafein'; //db명
$mysql_table = 'member'; //table명
$mysql_col1 = 'num'; //col1 명
$mysql_col2 = 'email'; //col2 명
$mysql_col3 = 'pw'; //col 3명
//$mysql_port = '3306';
$sql = "SELECT * FROM ".$mysql_table;
$connect = mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_database);

mysqli_select_db($connect, $mysql_database) or die('DB 선택 실패');
$result = mysqli_query($connect, $sql);
while($info=mysqli_fetch_array($result)){
    echo $info[$mysql_col1]." | ";
    echo $info[$mysql_col2]." | ";
    echo $info[$mysql_col3]."<br/>\n";
}
mysqli_close($connect);
?>

 

각자에 맞게 위에 변수의 값을 변경해서 이용하시면 될 것 같습니다 :)

 

 

[ 결과 ]

 

 

[ 실제 table ]

 

 

반응형
Posted by mminky
데이터베이스2020. 11. 22. 05:05
728x90

※ 우선 mySQL을 다운 받습니다.

 

* MySQL 로그인

 

cmd창

다음의 명령어로 MySQL Workbench 8.0 CE 디렉토리로 이동합니다.

 

cd C:\Program Files\MySQL\MySQL Workbench 8.0 CE

 

저는 root 계정으로 로그인을 할 것이라서 다음과 같이 명령어를 입력했습니다.

mysql -u root -p

 

비밀번호 입력까지 성공하면

mysql> 이라고 나타납니다.

 

 

* 데이터베이스 생성

 

create database 데이터베이스명;

 

 

* 데이터베이스 확인

 

show databases;

 

위에서 생성했던 cafeIn이라는 데이터 베이스가 생성된 것을 확인 할 수 있습니다.

 

 

* 데이터베이스에 테이블 만들기

 

저는 다음과 같이 num, email, pw, name 네 개의 필드로 구성된 테이블을 생성하려고 합니다.

필드명 타입 비고
num int 회원번호
email char(30) 이메일 주소
pw char(20) 비밀번호
name char(80) 성명

char(30)이란 30 byte를 허용한다는 의미 입니다.

 

 

먼저 이용할 데이터베이스에 접속합니다.

use 데이터베이스명

 

 

 

다음의 명령어로 테이블을 생성합니다.

( -> 는 엔터를 치면 자동으로 입력됩니다. )

create table 테이블명(
-> 필드명 타입,
-> 필드명 타입,
...
-> primary key(필드명)
-> );

 

 

member라는 테이블을 생성했습니다.

 

num 필드는 회원번호이기 때문에 null이면 안 됩니다. [num int not null]

( 아이디로 이용할 email, 비밀번호 pw도 마찬가지)

 

그리고 primary key로 num을 지정해줬습니다. [primary key(num)]

primary key는 필수는 아니지만 테이블을 관리하는 기본 키 입니다. (회원1, 회원2 ..)

 

 

* 데이터베이스의 테이블 확인

 

desc 테이블명;

 

member 테이블이 num, email, pw, name 4개의 필드로 구성된 것을 확인 할 수 있습니다.

그리고 num이 primary key로 설정된 것도 확인할 수 있습니다.

반응형
Posted by mminky