경험 상 Project import 가 안되는 경우 두 가지

오류 날 때마다 다른 경우가 생기면  해결하면서 추가해두겠다.

 

1. 좌측 Project Explorer에 import한 파일이 아예 나타나지 않는 경우.

 

 

(1) 상단 File -> open project from File system으로 import를 하면 Project Explorer 상에 나타나지 않는다.

 

project explorer 위에 커서를 두고 마우스 우클릭 -> Import -> General -> Existing projects into workspace

->  next -> select root directory : Browse... -> 원하는 파일 클릭하고 Finish.

 

해결되었다. workspace 폴더 안에 이미 해당 프로젝트가 위치해 있는 경우에는 위의 방법으로 import 해주면 된다. 

 

 

2. Project가 import 되기는 하였지만 에러 표시가 나타나는 경우.

 

(1) JDK 버전 맞추기

사용하고 있는 JDK 버전으로 잘 맞춰준다. 

jdk version 확인은 cmd -> java -version 입력하면 확인할 수 있다.

cmd 상에 java -version 명령어를 입력하면 아래와 같이 Java 버전이 표시된다. 

 

(2) 이클립스 경로에 한글이 들어가지 않았나 확인한다.

한글이 들어갈 경우 에러가 생기는 경우가 있으니 애초에 빼두는 것이 좋다. 

 

(3) Maven 이나 Gradle 일 경우 Refresh 해준다.

 

프로젝트 우측 클릭

Gradle 일 경우 Gradle 메뉴가 보이지 않을경우 Configure 에서 Gradle 선택하고나면 보인다.

code-factory.tistory.com 참고

 

 

(4) 프로젝트 파일 내에 lib-> jar파일에 문제가 있는지 확인해본다. delete하고 jar파일 새로 upload.

 

 

3. WAR 파일 import 하기 

General -> Existing Projects into Workspace -> Web -> 해당 Warfile -> Finish

 

 

'Utils' 카테고리의 다른 글

Eclipse 에러 정리  (0) 2022.05.29

console.log() 메서드는 웹 콘솔에만 메시지 출력한다.

 

ex1 | document.

<script type="text/javascript">
document.write("안녕 자바스크립트!!");
</script>

 

HTML 페이지의 <body> 태그 안을 document 라고 부른다.

 

ex2 -1  | var

	var a = 10
	a = 100
	console.log("1 = >" + a)
	{
		var a = 200
		console.log("2 = >" + a)
		{
			var a = 300
			console.log("3 = >" + a)
			{
				var a = 400
				console.log("4 = >" + a)
			}
			console.log("5 = >" + a)
		}
		console.log("6 = >" + a)
	}
	console.log("7 = >" + a)

var 변수 - 각기 구역 다른 값을 출력한다. 어디에서 어떻게 사용될지 파악하기 힘듬. 때문에 let과 const방식을 보완.

구역 잡아놓은 것과 관계 없이 최근의 a 값을 가지고 내려간다.

 

 

ex2 -2  | let

<script type="text/javascript">
	let a = 100
	a = 250
	console.log("1 = >" + a) //200
	{
		let a = 50
		console.log("2 = >" + a) // 50
		{
			let a = 200
			console.log("3 = >" + a)
			{
				let a = 300
				console.log("4 = >" + a)
			}
			console.log("5 = >" + a)
		}
		console.log("6 = >" + a)
	}
	console.log("7 = >" + a)
</script>

 

let 변수 - 구역내에 변수값이 지정되어 있으면 해당 값을 그대로 가지고 간다. 

let은 변수에 재할당이 가능하다. 하지만, const는 변수 재선언, 변수 재할당 모두 불가능하다. 

 

exam03 - 07 기본연산이라 스킵

 

ex8 Math 함수

	console.log(a + 3); // 1.73
	console.log(parseInt(a) + 3);  // 반올림 x , 4
	console.log(Math.floor(a) + 3); // 4
	console.log(Number(a) + 3);  // 4.7
	console.log(~~(a) + 3); // Math.floor(a) 와 비슷, 4


Math.ceil() : 소수점 올림, 정수 반환
Math.floor() : 소수점 버림, 정수 반환
Math.round() : 소수점 반올림, 정수 반환
toFixed() : 숫자에서 원하는 소수점 길이만큼만 반올림하여서 반환

parseInt() : 문자 -> 정수     "123" -> 123
parseFloat() : 문자 -> 실수     "45.3" -> 45.3
Number() : 문자 -> 정수&실수

'Lang > JavaScript' 카테고리의 다른 글

Asynchronous(동기) vs Synchronous(비동기)  (0) 2022.06.06
AJAX  (0) 2022.06.06
리마인드  (0) 2022.06.05
exam11 - 25 / drill ( + return 쓰임)  (0) 2022.06.05

Idea에 정리한 myBatis working procedure 리마인드.

 

(0) config.xml로 connection pool 생성 해준 후, mapper.xml 관련 정보를 포함시켜준다.

(1) UserMain 사용자 입력 받기

public void menu() {
		UserService userService = null;
		Scanner scan = new Scanner(System.in);
		int num = 0;
		
		while(true) {
			System.out.println();
			System.out.println("*************");
			System.out.println("       1. 입력");
			System.out.println("       2. 출력");
			System.out.println("       3. 수정");
			System.out.println("       4. 삭제");
			System.out.println("       5. 검색");
			System.out.println("       6. 끝");
			System.out.println("*************");
			System.out.print("    번호 : ");
			num = scan.nextInt();

 

(2) UserService로 넘어간다. 

 

UserService 는 각 메서드를 가진 insert, delete, search, selectservice 자바 페이지의 인터페이스가 들어간다.

- mvc에서 servlet 쓰다오니까 헷갈린다. usermain -> userservice -> userinsertservice -> userDAO 순이다.

package user.service;

public interface UserService {
	public void excute();
}

(3) UserInsert/Delete/Update/SearchService 

 

UserMain에서 사용자 입력값은 else 조건문으로 받았고, DAO를 통해 database에 값을 저장시킨다.

각 service 클래스의 execute를 불러와서 실행시킨다.

public class UserInsertService implements UserService {

	@Override
	public void excute() {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("이름 :");
		String name = scan.next();
		
		System.out.print("아이디 :");
		String id = scan.next();
		
		System.out.print("비밀번호 :");
		String pwd = scan.next();
		
		//name, id pwd를 UserDTO에 담기
		UserDTO userDTO = new UserDTO();
		userDTO.setName(name);
		userDTO.setId(id);
		userDTO.setPwd(pwd);

		//DB
		UserDAO userDAO = new UserDAO();
		userDAO.write(userDTO);
		
		//응답
		System.out.println("데이터를 저장하였습니다.");
	}

}

 

(4) Data access object 구동 방식.

DB 직접 접근 안하고 간접적으로 datasource에 요청하는것 확인

	public UserDAO() {
		try {
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); // src 라는 말은 default로 설정되어있다
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

 

'Database > myBatis' 카테고리의 다른 글

Core Idea.  (0) 2022.05.25

myBatis - Software Framework.

framework 란, 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조를 말한다. 

myBatis는 그중에서도 ORM으로 분류되는데 ORM은 Object Relational Mapping의 약자로써 오브젝트와 관계형 데이터벵크의 데이터를 자동으로 매핑해주는 것으로 이해

 

 

1. 특징

 

(1)   쿼리문, 예외처리, 트랙잭션 관리들을 XM 형식으로 관리. XM은 확장자를 말한다. 

(2)   쉽고, 간단하고, 의존성 줄이기라는 세가지 목표를 갖음.

       sql문과 자바 코드 분리하여 자바 개발하는 쿼리문을 신경쓰지 않아도 된다.

(3)   SQL를 자바코드와 분리, SQL 문 수정이 있을때마다 자바를 변경/컴파일 하지 않아도 된다.

 

2. 설치

 

(1)   https://blog.mybatis.org 

 

The MyBatis Blog

A blog about the the MyBatis data mapper framework.

blog.mybatis.org

(2)   product -> 3.5.7 (필요한 버전) -> mybatis 3.5.7 download -> java_ee (필요한 폴더에 압축 풀기)

(3)   압축 해제한 폴더에 보면 파일 4가지가 들어있다. (License, mybatis, mybatis jarfile, notice) -> jarFile만 사용

(4)   사용 방법 :

eclipse에 자바 프로젝트 open -> lib파일을 만들어준다 -> ojdbc, jar, mybatis 세 개 파일을 넣어준다. 

-> 넣은 파일 세가지 스크롤해서  마우스 우클릭, Build path 설정해준다 ->reference libraries 생성된 것 보이면 설정완료

 

 

3. myBatis 작동 순서

UserMain -> UserService -> UserInsertService -> UserServie ->&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;userDAO / MVC 처럼 servlet을 거치지 않는다.

 

UserInsert Service -> userDAO ->userMapper.xml로 myBatis가 연결되는 모습

 

4. myBatis 환경설정 

 

mybatis-config.xml

 

(1) Connection Pool

=> 서버에 미리 Connection 만들어 놓는 것. 구동시 마다 켜지 않아도 되기 떄문에 시간적인 면에서 효율적이다.

=> driver, username, password 등 jsp header에 일반적으로 기입되었던 정보들을 의미함

 

(2) mapper.xml (sql) 정보를 포함하고 있어야 한다.

(3) 별칭 필요 / 이름이 너무 길다면 짧게 만들 수 있다.

(4) 메모리의 크기를 조정할 수 있다.

 

 

5. myBatis 구조 

(1) myBatis에 접근하기 위해선 sqlSession 객체가 필요하다

(2) SqlSessionFactory를 통해 sqlSession를 생성한다. => 일반적으로는 DAO 에서 sqlSession을 생성해주면 된다.

 

6. 데이터를 꺼내오는 과정

 

(1) dataSource를 통해서 data들을 꺼내온다.

dataSource는 은행 직원이라고 생각하면된다. 직접 DB에 접근은 못하지만 간접적으로, dataSource에 요청되고

dataSource가 DB접근후 데이터를 꺼내온다.

 

7. myBatis Mapper Interface 

- 를 통해서 DB접근

basic structure below

 

'Database > myBatis' 카테고리의 다른 글

myBatisTest / drill  (0) 2022.05.26

+ Recent posts