티스토리 뷰
mybatis 를 spring framework (스프링)에 연동해서만 써봤지..
java class 파일에서 db연결을 할때 mybatis 를 써볼생각을 안했었다..
근데 java 로 batch 프로그램을 만들려다보니 문득 일반적인 jdbc 연결 말고.. mybatis 를 사용하면 더 편하지 않을까 하는 팀장님에 권유로 한번 해봤고
생각보다 쉽게 잘 적용할수잇었고 이를 기록으로 남기고자.....
ㅋㅋ..
<내용 요약>
우선 윈도우에서 이클립스를 쓰는환경에서 기본 코딩을 해보고
코딩된 소스를 가지고 리눅스로 가져가서 컴파일 후 돌려보는식에 내용이 작성되어있다.
<윈도우 & 이클립스 환경>
1. mybatis 다운로드
- https://github.com/mybatis/mybatis-3/releases
- mybatis-3.2.8.zip 다운로드
2. 이클립스 실행
- Project Explorer 에서 New Java Project 생성
- 프로젝트명 : test_mybatis
3. test.java 생성
4. test_mybatis 프로젝트에 libs 디렉토리 생성
5. 라이브러리 추가
- mybatis-3.2.8.zip의 압축을 풀고
- mybatis-3.2.8.jar 파일을
- 방금 생성한 libs 디렉토리에 추가
- 그 . 리 . 고
- mysql connector 가 필요하다.
- mysql-connector-java-5.1.29.jar 이놈도 추가해주자 (구글에서 mysql connector download 치면 쉽게 받을수있어요~)
6. java build path 설정
- Project Explorer 에서 test_mybatis 프로젝트명 우클릭
- properties 선택
- Java Build Path 선택
- Libraries 탭으로 이동
- Add JARs 선택
- libs 디렉토리에 추가해두었던 mybatis-3.2.8.jar 선택 후 확인
- libs 디렉토리에 추가해두었던 mysql-connector-java-5.1.29.jar 선택 후 확인
7. 코딩
예제 소스
>>> test.java
import java.util.List;
import org.apache.ibatis.session.SqlSession;
public class test{
public static void main(String[] args) {
// TODO Auto-generated method stub
SqlSession session = SqlMapClient.getSqlSession();
String nick = session.selectOne("test.getNick");
System.out.println("nick test : " + nick);
session.close();
}
}
>>> SqlMapClient.java
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlMapClient {
private static SqlSession session;
static {
try {
String resource = "myBatisConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
session = sqlMapper.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return session;
}
}
>>> sqlMapper/sql.xml (sqlMapper 디렉토리를 생성하고 그 안에 sql.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="test">
<select id="getNick" resultType="String">
select nickname from user_info where id='111'
</select>
</mapper>
>>> db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://DB서버주소/DB의database이름
username=DB계정을써주세요
password=DB계정에대한 비밀번호를 써주세요
>>> myBatisConfig.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>
<!-- db 정보 파일을 로드한다. -->
<properties resource="db.properties" />
<!-- db 연결 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- sql 맵퍼 -->
<mappers>
<mapper resource="sqlMapper/sql.xml" />
</mappers>
</configuration>
===============================================
이제 리눅스환경에서 위 내용을 돌려봅시다.
1. jdk 설치되어있어야하고
2. /home/batch 디렉토리 생성
3. 아래 모양처럼.. batch 디렉토리 아래에 쫙 밀어넣는다. (sqlMapper 디렉토리에는 sql.xml 이 있어야겠지)
-rw-r--r-- 1 user1 user1 831 4월 7 15:36 SqlMapClient.java
-rw-r--r-- 1 user1 user1 420 4월 7 15:36 test.java
-rw-r--r-- 1 user1 user1 102 4월 7 15:36 db.properties
-rw-r--r-- 1 user1 user1 918 4월 7 15:36 myBatisConfig.xml
-rw-r--r-- 1 user1 user1 714073 4월 7 15:36 mybatis-3.2.8.jar
-rw-r--r-- 1 user1 user1 876730 4월 7 16:06 mysql-connector-java-5.1.29.jar
drwxrwxr-x 2 user1 user1 4096 4월 7 16:03 sqlMapper
4. 환경변수설정
- root 계정으로 로그인 후
- vi /etc/profile
- 아래내용들을 추가한다. (본인 설치정보에 맞게 내용은 바꾸셔야겠죠?!)
JAVA_HOME=/home/jdk1.7
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
export CLASSPATH=$CLASSPATH:/home/batch/mybatis-3.2.8.jar
export CLASSPATH=$CLASSPATH:/home/batch/mysql-connector-java-5.1.29.jar
- 그러고나서 batch 디렉토리로 돌아온다음
javac SqlMapClient.java
javac accessLog_analyze.java
순으로 컴파일
java accessLog_analyze 로 실행하면 됨
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
디버깅
Could not find resource SqlMapClientManager.xml
[원인] 자바파일 내 경로문제
SqlMapConfig.xml을 찾지 못해서 발생하는 에러.
[해결]
방법1.
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
수정 =>
Reader reader =new java.io.FileReader("C:\\SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
방법2.
클래스 패스에 SqlMapConfig.xml 을 넣어주면 된다.
java.lang.NoClassDefFoundError: org/apache/commons/dbcp/BasicDataSource
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); 여기에서 발생하는 에러인데,
[원인] SqlMapConfig.xml을 인식하지 못해서 발생하는 에러
[해결]방법2.
클래스 패스에 SqlMapConfig.xml 을 넣어주면 된다.
com.ibatis.common.xml.NodeletException
[원인] XML파일 내 경로문제
java class 파일에서 db연결을 할때 mybatis 를 써볼생각을 안했었다..
근데 java 로 batch 프로그램을 만들려다보니 문득 일반적인 jdbc 연결 말고.. mybatis 를 사용하면 더 편하지 않을까 하는 팀장님에 권유로 한번 해봤고
생각보다 쉽게 잘 적용할수잇었고 이를 기록으로 남기고자.....
ㅋㅋ..
<내용 요약>
우선 윈도우에서 이클립스를 쓰는환경에서 기본 코딩을 해보고
코딩된 소스를 가지고 리눅스로 가져가서 컴파일 후 돌려보는식에 내용이 작성되어있다.
<윈도우 & 이클립스 환경>
1. mybatis 다운로드
- https://github.com/mybatis/mybatis-3/releases
- mybatis-3.2.8.zip 다운로드
2. 이클립스 실행
- Project Explorer 에서 New Java Project 생성
- 프로젝트명 : test_mybatis
3. test.java 생성
4. test_mybatis 프로젝트에 libs 디렉토리 생성
5. 라이브러리 추가
- mybatis-3.2.8.zip의 압축을 풀고
- mybatis-3.2.8.jar 파일을
- 방금 생성한 libs 디렉토리에 추가
- 그 . 리 . 고
- mysql connector 가 필요하다.
- mysql-connector-java-5.1.29.jar 이놈도 추가해주자 (구글에서 mysql connector download 치면 쉽게 받을수있어요~)
6. java build path 설정
- Project Explorer 에서 test_mybatis 프로젝트명 우클릭
- properties 선택
- Java Build Path 선택
- Libraries 탭으로 이동
- Add JARs 선택
- libs 디렉토리에 추가해두었던 mybatis-3.2.8.jar 선택 후 확인
- libs 디렉토리에 추가해두었던 mysql-connector-java-5.1.29.jar 선택 후 확인
7. 코딩
예제 소스
>>> test.java
import java.util.List;
import org.apache.ibatis.session.SqlSession;
public class test{
public static void main(String[] args) {
// TODO Auto-generated method stub
SqlSession session = SqlMapClient.getSqlSession();
String nick = session.selectOne("test.getNick");
System.out.println("nick test : " + nick);
session.close();
}
}
>>> SqlMapClient.java
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlMapClient {
private static SqlSession session;
static {
try {
String resource = "myBatisConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
session = sqlMapper.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return session;
}
}
>>> sqlMapper/sql.xml (sqlMapper 디렉토리를 생성하고 그 안에 sql.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="test">
<select id="getNick" resultType="String">
select nickname from user_info where id='111'
</select>
</mapper>
>>> db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://DB서버주소/DB의database이름
username=DB계정을써주세요
password=DB계정에대한 비밀번호를 써주세요
>>> myBatisConfig.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>
<!-- db 정보 파일을 로드한다. -->
<properties resource="db.properties" />
<!-- db 연결 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- sql 맵퍼 -->
<mappers>
<mapper resource="sqlMapper/sql.xml" />
</mappers>
</configuration>
===============================================
이제 리눅스환경에서 위 내용을 돌려봅시다.
1. jdk 설치되어있어야하고
2. /home/batch 디렉토리 생성
3. 아래 모양처럼.. batch 디렉토리 아래에 쫙 밀어넣는다. (sqlMapper 디렉토리에는 sql.xml 이 있어야겠지)
-rw-r--r-- 1 user1 user1 831 4월 7 15:36 SqlMapClient.java
-rw-r--r-- 1 user1 user1 420 4월 7 15:36 test.java
-rw-r--r-- 1 user1 user1 102 4월 7 15:36 db.properties
-rw-r--r-- 1 user1 user1 918 4월 7 15:36 myBatisConfig.xml
-rw-r--r-- 1 user1 user1 714073 4월 7 15:36 mybatis-3.2.8.jar
-rw-r--r-- 1 user1 user1 876730 4월 7 16:06 mysql-connector-java-5.1.29.jar
drwxrwxr-x 2 user1 user1 4096 4월 7 16:03 sqlMapper
4. 환경변수설정
- root 계정으로 로그인 후
- vi /etc/profile
- 아래내용들을 추가한다. (본인 설치정보에 맞게 내용은 바꾸셔야겠죠?!)
JAVA_HOME=/home/jdk1.7
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
export CLASSPATH=$CLASSPATH:/home/batch/mybatis-3.2.8.jar
export CLASSPATH=$CLASSPATH:/home/batch/mysql-connector-java-5.1.29.jar
- 그러고나서 batch 디렉토리로 돌아온다음
javac SqlMapClient.java
javac accessLog_analyze.java
순으로 컴파일
java accessLog_analyze 로 실행하면 됨
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
디버깅
Could not find resource SqlMapClientManager.xml
[원인] 자바파일 내 경로문제
SqlMapConfig.xml을 찾지 못해서 발생하는 에러.
[해결]
방법1.
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
수정 =>
Reader reader =new java.io.FileReader("C:\\SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
방법2.
클래스 패스에 SqlMapConfig.xml 을 넣어주면 된다.
java.lang.NoClassDefFoundError: org/apache/commons/dbcp/BasicDataSource
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); 여기에서 발생하는 에러인데,
[원인] SqlMapConfig.xml을 인식하지 못해서 발생하는 에러
[해결]방법2.
클래스 패스에 SqlMapConfig.xml 을 넣어주면 된다.
com.ibatis.common.xml.NodeletException
[원인] XML파일 내 경로문제
'자바(Java)' 카테고리의 다른 글
java.util.HashMap cannot be cast to java.lang.Integer (0) | 2019.08.24 |
---|---|
자바 mybatis standalone (0) | 2019.08.21 |
자바 새벽시간일 경우 이전 날짜로 (0) | 2019.08.06 |
java – 날짜 문자열에서 시간 추출 (0) | 2019.08.06 |
자바 파일 읽기 및 이동 (0) | 2019.08.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- XE3
- php
- 스크래핑
- 이클립스
- 프로씨
- XE
- 플러터
- MySQL
- 자바 smtp
- ocjap
- esql
- webix
- 포인터
- ocajp
- C
- 오라클
- KG
- EC
- C언어
- 인포믹스
- 파이썬
- xe addon
- 파싱
- Python
- xe애드온
- JDBC
- 자바
- 문자열
- 라이믹스 모듈
- proc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함