공식 사이트

 

mybatis – MyBatis 3 | Introduction

What is MyBatis? MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use

mybatis.org

패키지 파일 구조

Mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
	<configuration>
		<environments default="development">
			<environment id="development">
				<transactionManager type="JDBC"/>
				<dataSource type="POOLED">
					<property name="driver" value="com.mysql.jdbc.Driver"/>
					<property name="url" value="jdbc:mysql://127.0.0.1:3306/board_db"/>
					<property name="username" value=""/> // 각자의 db username
					<property name="password" value="board1234"/> // 각자의 db password
				</dataSource>
			</environment>
		</environments>
		<mappers>
			<mapper resource="sqlmap/UserMapper.xml"/>
		</mappers>
</configuration>

 

User.java

sql 질의 후 결과를 담은 domain 객체

public class User {
    private String id;
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

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

 

UserMapper.xml

실행되는 SQL 질의문을 담음, Mybatis.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="UserMapper">
	<select id="findAll" resultType="User"> // default package가 아닐 경우 com.project.domain.User 이렇게 패키지명까지 작성해야 됨
		select * from user;
	</select>
</mapper>

 

UserMapper.java

@Mapper를 통해 mapper로 설정. xml 파일과 같은 이름으로 설정해야됨.

메소드 이름은 xml파일에서 대응되는 sql문의 id와 같게 만들어야됨.

ex) UserMapper.java -> UserMapper.xml

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
	List<User> findAll();
}

 

UserDAO.java

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import mybatis.MyBatis;

public class UserDAO {
	private SqlSessionFactory sessionFactory = null;
	
	public UserDAO() {
		this.sessionFactory = MyBatis.getSqlSessionFactory();
	}
	
	public List<User> findAll() {
		SqlSession session = this.sessionFactory.openSession();
		UserMapper userMapper = session.getMapper(UserMapper.class); // UserMapper.java(인터페이스)를 통해 UserMapper.xml을 실행시킴
		try {
			return userMapper.findAll();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null) {
				session.close();
			}
		}
		return null;
	}
}

 

Mybatis.java

mybatis.xml 파일을 로딩하여 mybatis를 사용할 수 있게 하는 객체를 가져옴

package mybatis;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatis {
	private final static String RESOURCE = "mybatis/mybatis.xml";
	private static SqlSessionFactory sqlMapper = null;
	
	public static SqlSessionFactory getSqlSessionFactory() {
		if (sqlMapper == null) {
			try {
				InputStream inputStream = Resources.getResourceAsStream(RESOURCE);
				sqlMapper = new SqlSessionFactoryBuilder().build(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sqlMapper;
	}
}

 

참고 사이트

 

JSP 게시판 업그레이드 - Mybatis 연동 2

JSP 게시판 업그레이드 - Mybatis 연동 2 웹 프로젝트내에 MyBatis를 적용하고 수정/추가된 소스에 ...

blog.naver.com

 

 

[JSP] 8. 영속프레임워크 MyBatis를 활용한 CRUD 구현 - JSP와 Oracle(XML 방식)

[JSP] 8. 영속프레임워크 MyBatis를 활용한 CRUD 구현 - JSP와 Oracle(XML 방식) 조금 알기 쉽게 작성하였다. "영속 프레임워크"라고 보면 된다. 영속 프레임워크라는 것은 DAO 객체에서 데이터베이스 데이

yyman.tistory.com

 

git push origin +<브랜치명>

이 명령어를 사용하면 제대로 수정된다.

+를 붙이면 덮어씌우겠다는 뜻이 된다.

 

 

git push를 했을 때 나오는 reject문

local Repository가 서버에 있는 Repository보다 오래되었을 때 나온다. Push 를 하게 되면 서버에 있는 최신 내용은 날라가기 때문에 나오는 오류.

'개발 > git' 카테고리의 다른 글

git untracked file로 되돌리기  (0) 2022.04.02
vimdiff를 사용하기  (0) 2021.01.17
git 병합 충돌  (0) 2021.01.17
GIT Cherry-pick & rebase  (0) 2020.07.29
GIT 협업  (0) 2020.07.24

difftool 설정 / 사용법 : goodtogreate.tistory.com/entry/git-difftool-%EC%82%AC%EC%9A%A9%EB%B2%95

 

git difftool 사용법

git difftool 사용법 git mergetool 로 병합을 수행할 시 conflict문제가 발생하면 아래와 같이 해결한다. git difftool 설정 git config --global diff.tool vimdiff git config --global difftool.prompt false..

goodtogreate.tistory.com

mergetool로 설정: www.rosipov.com/blog/use-vimdiff-as-git-mergetool/

 

Use vimdiff as git mergetool - Ruslan Osipov

Using vimdiff as a git mergetool can be pretty confusing - multiple windows and little explanation. This is a short tutorial which explains basic usage, and what the LOCAL, BASE, and REMOTE keywords mean. This implies that you have at least a little bit of

www.rosipov.com

 

'개발 > git' 카테고리의 다른 글

git untracked file로 되돌리기  (0) 2022.04.02
이미 push된 commit 삭제  (0) 2021.02.17
git 병합 충돌  (0) 2021.01.17
GIT Cherry-pick & rebase  (0) 2020.07.29
GIT 협업  (0) 2020.07.24

vimdiff를 이용한 방법 : c10106.tistory.com/1441

 

Git에서 병합 충돌을 해결하는 방법

Git에서 병합 충돌을 해결하는 방법 Git에서 병합 충돌을 어떻게 해결합니까? 시험: git mergetool 충돌이 발생할 때마다 단계별로 안내하는 GUI가 열리고 병합 방법을 선택할 수 있습니다. 때로는 나

c10106.tistory.com

각각 브런치에서 a 파일에서 3라인과 5라인이 변경된 경우 알아서 base 파일에 3라인 5라인을 추가시킨 걸로 자동 머지해줌.

 

동일한 라인을 변경시키면 자동 머지가 안되고 직접 수정해줘야 함.

'개발 > git' 카테고리의 다른 글

이미 push된 commit 삭제  (0) 2021.02.17
vimdiff를 사용하기  (0) 2021.01.17
GIT Cherry-pick & rebase  (0) 2020.07.29
GIT 협업  (0) 2020.07.24
GIT Backup  (0) 2020.07.22

해당 내용은 생활코딩에서 공부한 내용을 복습하기 위해 다시 간단하게 정리한 글입니다.

더 자세한 건 생활코딩에서


git cherry-pick

t2 버전을 master 브렌치에 추가할 때 t2 버전이 생길 때 있었던 변화만을 적용하는 것이 cherry-pick이다.

t2 버전을 cherry-pick하면 t1, t2 파일이 추가되는 것이 아니라 t2 버전에서 생긴 변화인 t2 파일만 추가되었다.

즉, cherry-pick은 변화만을 가져온다.


git rebase

두 branch의 공통 조상이 base이다.

a branch를 b branch 뒤에 이을려고 하면 a branch의 시작점이 b branch의 끝을 가리키게 된다.

따라서 a branch의 base가 바뀌게 되는 것이다.

그래서 rebase이다.

 

rebase 후의 모습

rebase를 하면 옮기고 싶은 branch로 이동하고 git rebase <branch>를 하면 된다.

'개발 > git' 카테고리의 다른 글

vimdiff를 사용하기  (0) 2021.01.17
git 병합 충돌  (0) 2021.01.17
GIT 협업  (0) 2020.07.24
GIT Backup  (0) 2020.07.22
git Branch & Conflict  (0) 2020.07.10

해당 내용은 생활코딩에서 공부한 내용을 복습하기 위해 다시 간단하게 정리한 글입니다.

더 자세한 건 생활코딩에서


git pull VS fetch & 원격 브랜치

git pull = git fetch + git merge FETCH_HEAD 

git fetch를 한 후

git fetch를 하고 나서도 orgin/master, origin/HEAD는 변경되었지만 HEAD -> master는 변경되지 않았다.

git pull을 하고 나면 HEAD -> master 도 변경된다.

git merge origin/master를 하고 난 후

git merge origin/master(FETCH_HEAD로 써도 됨)를 하고 나면 git pull을 한 상태와 동일해진다.

git fetch는 remote branch만 가져오는 방법이다.

 

신중하게 git의 데이터를 pull하고 싶을 때, 결합은 나중에 하고 일단 가져오고 싶을 때 사용한다.


patch

아무나 git pull은 할 수 있지만 git push는 할 수 없다.

하지만 수정한 내용을 전달하고 싶다면 git format-patch <작업하기 직전의 commit>을 하면 fatch 확장자를 가진파일이 생긴다.

해당 파일에는 누가 언제 무엇을 작업했는 지(수정했는 지) 적혀있다.

이 파일은 각 commit의 변경점이 저장되어있다.

 

권한이 있는 사람은 patch 파일을 받고 해당 내용을 병합할려면 git am -3 -i *.patch를 하면 새로운 버전으로 추가할 수 있다.

추가된 커밋 id는 달라진다.


pull request

pull request는 내가 작업한 내용을 pull 해달라고 요청하는 기능이다.

오픈소스 프로젝트에서 광범위하게 사용된다.

 

오픈소스 프로젝트를 folk하면 내 repository로 복사해올 수 있다.

거기서는 맘대로 수정하고 바꿀 수 있다.

내가 수정한 내용이 유용해서 오리지널인 오픈소스 프로젝트에 추가하고 싶으면 pull request를 한다.

오픈소스 프로젝트의 Pull requests탭에 추가되게 된다.

해당 request를 받으면 merge가 되게 된다.

'개발 > git' 카테고리의 다른 글

git 병합 충돌  (0) 2021.01.17
GIT Cherry-pick & rebase  (0) 2020.07.29
GIT Backup  (0) 2020.07.22
git Branch & Conflict  (0) 2020.07.10
git 버전관리  (0) 2020.07.06

+ Recent posts