[MyBatis] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

MyBatis 2014. 10. 27. 20:38

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 위와같은 에러가 발생하였다.



※ 원인 및 해결

수정 전

수정 후

select MB_ADMIN from member

where MB_USERID = #{value}

select MB_ADMIN from MEMBER
where MB_USERID = #{value}




 DB를 MySQL을 사용중인데 대소문자를 구분한다.

 원래 테이블 명을 전부 대문자로 지정하였는데.

 쿼리를 대문자로 변경하니 에러가 사라졌다.

[MyBatis] org.apache.ibatis.exceptions.PersistenceException 에러

MyBatis 2014. 9. 12. 20:09

01. org.apache.ibatis.exceptions.PersistenceException





02. 로컬에서 테스트 중인 서버의 이름은 소문자 'board' 였다.





03. 서버에서 테스트 중인 서버의 이름은 대문자 'BOARD' 였다.





04. 컬럼명을 대문자를 다시 소문자로 변경하여 해결할 수 있었다.


테이블 명 변경

ALTER TABLE '테이블명' RENAME '변경할테이블'

ALTER TABLE 'BOARD' RENAME 'board'








[MyBatis] 마이바티스 구조

MyBatis 2013. 10. 1. 18:13

 ■ 마이바티스 구조




ㅁ 설정파일(mybatis-config.xml) : 데이터베이스 설정과 트랜잭션 등 마이바티스가 동작하는 규칙을 정의한다.

ㅁ 매퍼 :SQL을 XML에 정의한 매퍼 XML 파일(1개 이상)과 SQL을 인터페이스의 메소드마다 애노테이션으로 정의한 매퍼 인터페이스(1개 이상)를 의미한다.

ㅁ 결과 매핑과 매핑 구문 : 조회 결과를 자바 객체에 설정하는 규칙을 나타내는 결과 매핑과 SQL을 XML에 정의한 매핑 구문을 말한다.

    매핑 구문을 정의하는 방법은 애노테이션과 XML 방식 두가지가 있다.

ㅁ 지원하는 파라미터 타입 : Map객체, Java 모델 클래스, 원시타입(int, String 등)이 있다.

ㅁ 지원하는 결과 타입 : Map객체, Java 모델 클래스, 원시 타입(int, String 등)이 있다.


※ JDBC와 MyBatis의 비교

 ① 마이바티스 코드는 매번 데이터베이스 자원을 생성하고 해제하기 위한 코드가 필요하지 않다.

 ② 파라미터를 설정하기 위한 코드가 거의 없다.

 ③ 결과셋을 가져와서 값을 설정하는 코드가 거의 없다.

 ④ SQL이 자바 코드 내의 문자열로 처리되는 반면에 마이바티스는 SQL을 XML이나 인터페이스 내의 애노테이션으로 별도 관리한다.

     나중에 SQL만 별도로 보고자 할 때 편리하다.

 ⑤ 마이바티스를 구성하는 구성 요소는 5가지로, 설정 파일, 매퍼, 결과 매핑과 매핑구문, 파라미터 타입, 결과 타입이다.


※ iBatis와 MyBatis의 비교

구분

iBatis

MyBatis

 네임스페이스

 -. 선택사항

 -. 필수사항

 매핑 구문 정의

 -. XML만 사용

 -. XML과 애노테이션 사용

 동적 SQL

 -. XML 엘리먼트만 사용

    (동적 SQL을 위한 XML 엘리먼트는 16개 내외)

 -. XML 엘리먼트 및 구문 빌더 사용

    (동적 SQL을 위한 XML 엘리먼트는 4개 내외)

 스프링 연동

 -. 스프링 자체 구현체 사용

 -. 마이바티스 별도 모듈 사용

 지원계획

 -. 향후 아이바티스에 대한 공식적인 릴리스는 없을 것으로 보임

 -. 향후 계속 개선돼 릴리스될 예정



[MyBatis] 마이바티스 설정 파일

MyBatis 2013. 9. 25. 15:22

■ 마이바티스 설정파일(Oracle)

 mybatis-config.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>
    <typeAliases>
        <typeAlias type="ldg.mybatis.model.Comment" alias="Comment" />
    </typeAliases>
    <environments default="development">
        <environment id="development">


            <!-- ① 트랜잭션 관리자 -->
            <transactionManager type="JDBC" />


            <!-- ② 데이터베이스 설정 -->
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:mybatis" />
                <property name="username" value="mybatis" />
                <property name="password" value="asdf" />
            </dataSource>
        </environment>
    </environments>


    <!-- ③ 매퍼정보 설정 -->

    <mappers>
        <mapper resource="ldg/mybatis/repository/mapper/CommentMapper.xml" />
    </mappers>
</configuration>



① 트랜잭션 관리자

 -. 데이터베이스에서 트랜잭션은 가장 중요한 기능 중 하나다.

 -. JDBC 코드를 대체하기 때문에 type로 지정하면 된다.

 -. 트랜잭션 관리자는 JDBC 외에도 MANGED를 지정할 수 있다.



② 데이터베이스 설정

 -. JDBC를 사용해 데이터베이스에 연결하려면 드라이버 클래스명, JDBC, URL, 계정 정보가 필요하다.

  Oracle

 드라이버 클래스명

 oracle.jdbc.driver.OracleDriver

 JDBC URL

 jdbc.oracle:thin:@localhost:1521:mybatis

  MySQL

 드라이버 클래스명

 com.mysql.jdbc.Driver

 JDBC URL

 jdbc:mysql://localhost:3306/mybatis

  SQL Server(sqljdbc.jar, sqljdbc4.jar 사용 시)

 드라이버 클래스명

 com.microsoft.jdbc.sqlserver.SQLServerDriver

 JDBC URL

 jdbc:sqlserver://localhost:1443;DatabaseName=mybatis

  SQL Server(msbase.jar, mssqlserver.jar, msutil.jar 사용 시)

 드라이버 클래스명
 com.microsft.jdbc.sqlserver.SQLServerDriver

 JDBC URL

 jdbc:microsft:sqlserver://localhost:1443;DatabaseName=mybatis

  SQL Server(log4sql.jar 사용 시)

 드라이버 클래스명

 net.sourceforge.jtds.jdbc.Driver

 net.sourceforge.jtds.jdbcx.JtdsDataSource

 JDBC URL

 jdbc.jtds:sqlserver://localhost:1443/mybatis;tds=8.0;lastupdatecount=true

  SQL Server(jds-1.2.jar 사용시)

 드라이버 클래스명 COM.ibm.db2.jdbc.net.DB2Driver
 com.ibm.db2.jcc.DB2Driver
 JDBC URL

 jdbc:db2://localhost:50000/mybatis

  DB2
 드라이버 클래스명 COM.ibm.db2.jdbc.net.DB2Driver
 com.ibm.db2.jcc.DB2Drvier
 JDBC URL jdbc:db2://localhost:50000/mybatis
  큐브리드
 드라이버 클래스명

 cubrid.jdbc.driver.CUBRIDDriver

 JDBC URL

 jdbc:cubrid:localhost:33000:demodb:::



③ 매퍼정보 설정

 -. SQL을 선언해둔 XML이나 인터페이스 형태의 매퍼 위치를 지정해줘야 한다.

 -. XML 위치는 클래스 패스를 기준으로 지정하면된다.


 ※ 팁

   -. 각종 설정 파일과 매퍼 정보의 위치는 실제 변환하는 프로젝트의 구조를 보면 한결 이해하기 쉽다.



  -. 프로젝트에서 사용하는 매퍼는 XML이며, src 아래 있는 CommentMapper.xml 이다.

  -. src가 클래스 패스에 있기 때문에 CommentMapper.xml 파일의 실제 경로는 ldg.mybatis.repository.mapper.CommentMapper.xml이다.