상세 컨텐츠

본문 제목

MyBatis Generator - Cannot instantiate object of type SqlMapConfigPlugin

Java

by mingoon.com 2020. 5. 13. 10:56

본문

반응형

이전에 개발했던 프로젝트의 이전에 개발했던 프로젝트의 DB에 변경사항이 생겨, MyBatis Generator를 다시 실행했는데 처음 보는 에러가 나타났다.

/Users/jeongminkim/eclipse-workspace/glmap/.metadata/.plugins/org.mybatis.generator.eclipse.ui/.generatedAntScripts/fgxtrc-model-generatorConfig.xml.xml:5: java.lang.RuntimeException: Cannot instantiate object of type org.mybatis.generator.plugins.SqlMapConfigPlugin java.lang.RuntimeException: Cannot instantiate object of type org.mybatis.generator.plugins.SqlMapConfigPlugin

이클립스의 MyBatis Generator 플러그인으로 해보고, Maven에 설정해서 빌드해도 마찬가지 에러가 나타났다.
뭐지.. 혹시나 해서 MyBatis 로 개발한 다른 프로젝트를 돌려보니 동일한 오류 발생.

 

알고보니 2019년 11월경에 새로운 1.4.0 버전이 릴리즈되었고, 설정 XML 파일 포맷이 바뀐데다 SqlMapConfigPlugin이 삭제되어서 발생한 에러였다.

 

주요 변경사항으로는..

  • 코틀린 코드 제너레이팅
  • MyBatis Dynamic SQL
  • iBatis2 지원 삭제
  • Java8 지원

먼저 에러 자체는 SqlMapConfigPlugin이 삭제되어 발생했는데, SqlMapConfigPlugin 삭제하고 실행하면 기존 Mapper와는 다른, JPA와 유사한 형태로 Mapper가 생성된다.

XML Configuration 문서를 보니 Context Element에 targetRuntime이란 속성이 있고, MyBatis3DynamicSql이 디폴트값이었다.

https://mybatis.org/generator/configreference/context.html

targetRuntime을 MyBatis3로 지정하여 해결.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>
    <classPathEntry location="${user.home}/.m2/repository/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar"/>
    <context id="context-mysql" targetRuntime="MyBatis3">
        <property name="javaFileEncoding" value="UTF-8"/>
        ...
    </context>
</generatorConfiguration>

댓글 영역