티스토리 뷰

자바(Java)

자바 spring mybatis standalone

xemaker 2019. 8. 19. 20:37
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파일 내 경로문제

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함