본문 바로가기
Maven

Maven에서 MyBatis 이용하기

by 전재훈 2014. 5. 16.
반응형

MyBatis는 SQL문을 편하기 사용하기 위해서 xml을 이용해 사용하는건데요

사용하시면 정말 편하다는걸 느낄 수 있으실거에요


인터넷에 검색해보면 설정하는 다양한 방식이 있을텐데 

저는 첫번째 myBatis를 이용하는 클래스파일

두번째 myBatis관련 설정하는 xml파일

마지막으로 정의와 쿼리문의 정의하는 xml파일

3가지로 구성했어요


먼저 클래스 파일이에요

패키지명, 아이디, 패스워드는 본인에 맞춰서 입력해주시면 되구요


public class MyBatisSQLQuery {

public MyBatisSQLQuery(String IPAddress) {

resource = "패키지명/mybatis-config.xml";

props = new Properties();

        props.put("driver"      , "com.mysql.jdbc.Driver");

        props.put("url"         , "jdbc:mysql://"+ IPAddress+":3306/bingo");

        props.put("username"    , "아이디");

        props.put("password"    , "패스워드");

        

        session = null;

        try {

            InputStream inputStream = Resources.getResourceAsStream(resource);

            SqlSessionFactory sqlSessionFactory 

                = new SqlSessionFactoryBuilder().build(inputStream, props);

 

       session = sqlSessionFactory.openSession(false); //false = Not autoCommit

       props.clear();

            inputStream.close(); 

        } catch (IOException e) { return ; }

        

}

public List<HashMap<String, Object>> select( String query, HashMap<String, String> input) {

        List<HashMap<String, Object>> outputs  = session.selectList("SqlMapper." + query, input);          

        return outputs;        

}

public List<HashMap<String, Object>> select( String query ) {

        List<HashMap<String, Object>> outputs  = session.selectList("SqlMapper." + query);          

        return outputs;        

}

public void insert(String query, HashMap<String, String> input) {

session.selectList("SqlMapper." + query, input); 

}

public void update(String query, HashMap<String, String> input) {

session.selectList("SqlMapper." + query, input); 

}

public void update(String query){

session.selectList("SqlMapper." + query); 

}

public void delete (String query) {

session.selectList("SqlMapper." + query); 

}

public void delete (String query, HashMap<String, String> input) {

session.selectList("SqlMapper." + query, input); 

}

public void clear(String query) {

session.selectList("SqlMapper." + query); 

}

public void clear(String query, HashMap<String, String> input) {

session.selectList("SqlMapper." + query, input); 

}

public void lock(String query) {

session.selectList("SqlMapper." + query); 

System.out.println("LOCK         " + query);

}

public void unlock(String query) {

session.selectList("SqlMapper." + query); 

System.out.println("UNLOCK         " + query);

}

public void sessionCommit(){

session.commit();

        session.close();

}

public void commit(){

session.commit();

}

private String resource;

private  Properties props;

private SqlSession session;

}


나중에 다른 자바파일에서 호출할때는

HashMap input = new HashMap<String, String>();

input.put("키값", "밸류값"):

MyBatisQuerySQL myBatis = new MyBatisQuerySQL("아이피주소");

List<HashMap<String,Object> outputs = myBatis.select( "쿼리문 별칭", input ) ;

myBatis.sessionCommit( );

이런 식으로 해주시면 되요

여기서 myBatis.sessionCommit( ); 를 호출해주시지 않으면 update문은 반영이 안되고 세션도 끊기지 않으니까 꼭 해주세요


클래스 파일 첨부할께요

MyBatisSQLQuery.java


여기서 클래스 파일을 넣으면 에러가 많이 발생할텐데 

이거는 뒤에가면 해결되니까 걱정마세요 ~ ㅋㅋ



두번째 위 클래스 파일에서 resource = "패키지명/mybatis-config.xml";

지정해준 myBatis 설정 파일을 만들어야해요

여기도 패키지명을 입력해주세요


<?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>

<settings>

<setting name="cacheEnabled" value="false"/>

<setting name="useGeneratedKeys" value="ture"/>

<setting name="lazyLoadingEnabled" value="true"/> 

<setting name="defaultExecutorType" value="BATCH"/>

<setting name="defaultStatementTimeout" value="3000"/>

</settings>


    <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}"/>  

                <property name="poolMaximumActiveConnections" value="100"/> <!-- 주어진 시간에 존재할수 있는 활성화된 커넥션 수 -->

                <property name="poolMaximumIdleConnections" value="100"/> <!-- 주어진 시간에 존재할 수 있는 유휴 커넥션의 수 -->

                <property name="poolTimeToWait" value="20000"/> <!-- 풀이 로그 상태를 출력하고 비정상적으로 긴경우 커넥션을 다시얻을려고 시도하는 로우 레벨 셋팅 -->

          </dataSource>

        </environment>

    </environments>

   

    <mappers>

        <mapper resource ="패키지명/Mapper파일명.xml"/>  

    </mappers>

</configuration>


파일 첨부할께요

mybatis-config.xml



세번째 위 설정파일에 <mappers> <mapper resource ~~ >     </mappers>

여기에 들어가는 sql문 매핑 파일이 필요해요


<?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="SqlMapper">

<select id="쿼리문 별칭" parameterType="java.util.HashMap" resultType="java.util.HashMap">

        select * from 테이블명 where 조건 = ${input에 입력한 key 값}

     </select>   

</mapper>


이렇게 작성해시면 

input.put("key", value);

List<HashMap<String,Object> outputs = myBatis.select( "쿼리문 별칭", input ) ;

하면은 

select * from 테이블명 where 조건 = ${key}   ( = select * from 테이블명 where 조건 = value )

값이 호출되요


파일 첨부할께요

매퍼파일.xml



마지막으로 이제 위에서 생긴 에러들을 없애볼께요

에러가 생긴이유는 라이브러리 파일을 찾을 수 없어서 생기는건데요

maven은 의존관계라는걸 통해서 쉽게 라이브러리를 연결할 수 있어서 참 좋은것같아요 


Maven Project를 생성했다면 pom.xml이라는 설정파일이 있을거에요

pom.xml파일에 보면 <dependencies> </dependencies>라는 의존관계를 정의하는 부분이있는데

이 부분에 Maven 관련된 의존성만 추가시키고 저장을 누르면 

라이브러리 파일이 자동으로 연결되죠


추가할 내용은

        <!-- spring framework -->

        <dependency>

  <groupId>org.springframework.integration</groupId>

  <artifactId>spring-integration-core</artifactId>

  <version>2.2.3.RELEASE</version>

</dependency>

        <!-- mysql connector -->

        <dependency>

       <groupId>mysql</groupId>

       <artifactId>mysql-connector-java</artifactId>

       <version>5.1.26</version>

   </dependency>

   

   <!-- mybatis spring -->

        <dependency>

            <groupId>org.mybatis</groupId>

            <artifactId>mybatis-spring</artifactId>

            <version>1.0.2</version>

        </dependency>

        

        <!-- apache commons dbcp-->

        <dependency>

            <groupId>commons-dbcp</groupId>

            <artifactId>commons-dbcp</artifactId>

            <version>1.2.2</version>

        </dependency>

        

<!-- mybatis-->

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib</artifactId>

<version>2.2.2</version>

</dependency>

<dependency>

<groupId>cglib</groupId>

<artifactId>cglib-nodep</artifactId>

<version>2.2.2</version>

</dependency>

<dependency>

        <groupId>org.mybatis</groupId>

        <artifactId>mybatis</artifactId>

        <version>3.1.1</version>

        </dependency>


이거에요

이것도 파일첨부할께요

pom.xml


에러가 떠도 차근차근 따라오시면 쉽게 따라하실 수 있을거에요






반응형

'Maven' 카테고리의 다른 글

이클립스 메이븐 연동 (메이븐 플러그인 설치)  (0) 2014.05.16

댓글