I am using MyBatis Generator 1.3.7, Oracle database 12c (run by Docker https://hub.docker.com/r/sath89/oracle-12c/ ), JDK 10.0.2.
This is file generatorConfig.xml
<?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="/Users/foo/Documents/mybatis/ojdbc7-12.1.0.1.jar"/>
<context id="context1">
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"/>
<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
<property name="searchString" value="Example$"/>
<property name="replaceString" value="Criteria"/>
</plugin>
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection connectionURL="jdbc:oracle:thin:dbuser/password@localhost:1521:xe" driverClass="oracle.jdbc.driver.OracleDriver">
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>
<sqlMapGenerator targetPackage="com.example.repository" targetProject="src/main/resources"/>
<javaClientGenerator targetPackage="com.example.repository" targetProject="src/main/java" type="XMLMAPPER"/>
<table tableName="CCY"/>
</context>
</generatorConfiguration>
My database schema
CREATE TABLE "CCY"
( "CURRENCY_ID" NUMBER(11,0),
"CURRENCY_NAME" NVARCHAR2(128),
"EXCHANGE_RATE" NUMBER(18,4),
"EXCHANGE_RATE_OPERATOR" NUMBER(1,0),
"IS_ACTIVE" NUMBER(1,0),
"CA_ACCOUNT" NVARCHAR2(32),
"BA_ACCOUNT" NVARCHAR2(32),
"PREFIX" NVARCHAR2(20),
"CCY_NAME" NVARCHAR2(128),
"DECIMAL_SEPERATE" NVARCHAR2(32),
"AFTER_DECIMAL" NVARCHAR2(20),
"SUBFIX" NVARCHAR2(20),
"CONVERT_RATE" NUMBER(18,4),
"PREFIX_ENG" NVARCHAR2(32),
"CCY_NAME_ENG" NVARCHAR2(32),
"DECIMAL_SEPERATE_ENG" NVARCHAR2(32),
"AFTER_DECIMAL_ENG" NVARCHAR2(32),
"SUBFIX_ENG" NVARCHAR2(32),
"CONVERT_RATE_ENG" NUMBER(18,4),
"PREFIX_DEFAULT" NVARCHAR2(20),
"CCY_NAME_DEFAULT" NVARCHAR2(20),
"DECIMAL_SEPERATE_DEFAULT" NVARCHAR2(32),
"AFTER_DECIMAL_DEFAULT" NVARCHAR2(32),
"SUBFIX_DEFAULT" NVARCHAR2(20),
"CONVERT_RATE_DEFAULT" NUMBER(18,4),
"PREFIX_DEFAULT_ENG" NVARCHAR2(32),
"CCY_NAME_DEFAULT_ENG" NVARCHAR2(32),
"DECIMAL_SEPERATE_DEFAULT_ENG" NVARCHAR2(32),
"AFTER_DECIMAL_DEFAULT_ENG" NVARCHAR2(32),
"SUBFIX_DEFAULT_ENG" NVARCHAR2(32),
"CONVERT_RATE_DEFAULT_ENG" NUMBER(18,4),
"EXAMPLE_AMOUNT" NUMBER(18,4),
"SORT_ORDER" NUMBER(*,0),
"VALUE_OF_MONEY" VARCHAR2(2048 BYTE),
"CREATED_DATE" TIMESTAMP (6) WITH TIME ZONE,
"CREATED_BY" NVARCHAR2(64),
"MODIFIED_DATE" TIMESTAMP (6) WITH TIME ZONE,
"MODIFIED_BY" NVARCHAR2(64)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
COMMENT ON COLUMN "CCY"."CURRENCY_ID" IS 'Currency identity number';
REM INSERTING into CCY
SET DEFINE OFF;
Insert into CCY (CURRENCY_ID,CURRENCY_NAME,EXCHANGE_RATE,EXCHANGE_RATE_OPERATOR,IS_ACTIVE,CA_ACCOUNT,BA_ACCOUNT,PREFIX,CCY_NAME,DECIMAL_SEPERATE,AFTER_DECIMAL,SUBFIX,CONVERT_RATE,PREFIX_ENG,CCY_NAME_ENG,DECIMAL_SEPERATE_ENG,AFTER_DECIMAL_ENG,SUBFIX_ENG,CONVERT_RATE_ENG,PREFIX_DEFAULT,CCY_NAME_DEFAULT,DECIMAL_SEPERATE_DEFAULT,AFTER_DECIMAL_DEFAULT,SUBFIX_DEFAULT,CONVERT_RATE_DEFAULT,PREFIX_DEFAULT_ENG,CCY_NAME_DEFAULT_ENG,DECIMAL_SEPERATE_DEFAULT_ENG,AFTER_DECIMAL_DEFAULT_ENG,SUBFIX_DEFAULT_ENG,CONVERT_RATE_DEFAULT_ENG,EXAMPLE_AMOUNT,SORT_ORDER,VALUE_OF_MONEY,CREATED_DATE,CREATED_BY,MODIFIED_DATE,MODIFIED_BY) values ('91','LYD','16082,71','0','0','1112','1122',null,'Libyan Dinar',null,null,null,'0',null,null,null,null,null,'0',null,null,null,null,null,'0',null,null,null,null,null,'0','0','130',null,to_timestamp_tz('14-02-2018 18:00:41,370000000 ASIA/HO_CHI_MINH','DD-MM-RRRR HH24:MI:SSXFF TZR'),'ADMIN',to_timestamp_tz('14-02-2018 18:00:41,370000000 ASIA/HO_CHI_MINH','DD-MM-RRRR HH24:MI:SSXFF TZR'),'ADMIN');
Insert into CCY (CURRENCY_ID,CURRENCY_NAME,EXCHANGE_RATE,EXCHANGE_RATE_OPERATOR,IS_ACTIVE,CA_ACCOUNT,BA_ACCOUNT,PREFIX,CCY_NAME,DECIMAL_SEPERATE,AFTER_DECIMAL,SUBFIX,CONVERT_RATE,PREFIX_ENG,CCY_NAME_ENG,DECIMAL_SEPERATE_ENG,AFTER_DECIMAL_ENG,SUBFIX_ENG,CONVERT_RATE_ENG,PREFIX_DEFAULT,CCY_NAME_DEFAULT,DECIMAL_SEPERATE_DEFAULT,AFTER_DECIMAL_DEFAULT,SUBFIX_DEFAULT,CONVERT_RATE_DEFAULT,PREFIX_DEFAULT_ENG,CCY_NAME_DEFAULT_ENG,DECIMAL_SEPERATE_DEFAULT_ENG,AFTER_DECIMAL_DEFAULT_ENG,SUBFIX_DEFAULT_ENG,CONVERT_RATE_DEFAULT_ENG,EXAMPLE_AMOUNT,SORT_ORDER,VALUE_OF_MONEY,CREATED_DATE,CREATED_BY,MODIFIED_DATE,MODIFIED_BY) values ('92','MAD','2254,55','0','0','1112','1122',null,'Moroccan Dirham',null,null,null,'0',null,null,null,null,null,'0',null,null,null,null,null,'0',null,null,null,null,null,'0','0','134',null,to_timestamp_tz('14-02-2018 18:00:41,370000000 ASIA/HO_CHI_MINH','DD-MM-RRRR HH24:MI:SSXFF TZR'),'ADMIN',to_timestamp_tz('14-02-2018 18:00:41,370000000 ASIA/HO_CHI_MINH','DD-MM-RRRR HH24:MI:SSXFF TZR'),'ADMIN');
I run command
java -jar /Users/foo/Documents/mybatis/mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml -overwrite
and the result is
package com.example.model;
import java.io.Serializable;
import java.math.BigDecimal;
public class Ccy implements Serializable {
private Long currencyId;
private Object currencyName;
private BigDecimal exchangeRate;
private Short exchangeRateOperator;
private Short isActive;
private Object caAccount;
private Object baAccount;
private Object prefix;
private Object ccyName;
private Object decimalSeperate;
private Object afterDecimal;
private Object subfix;
private BigDecimal convertRate;
private Object prefixEng;
private Object ccyNameEng;
private Object decimalSeperateEng;
private Object afterDecimalEng;
private Object subfixEng;
private BigDecimal convertRateEng;
private Object prefixDefault;
private Object ccyNameDefault;
private Object decimalSeperateDefault;
private Object afterDecimalDefault;
private Object subfixDefault;
private BigDecimal convertRateDefault;
private Object prefixDefaultEng;
private Object ccyNameDefaultEng;
private Object decimalSeperateDefaultEng;
private Object afterDecimalDefaultEng;
private Object subfixDefaultEng;
private BigDecimal convertRateDefaultEng;
private BigDecimal exampleAmount;
private BigDecimal sortOrder;
private String valueOfMoney;
private Object createdDate;
private Object createdBy;
private Object modifiedDate;
private Object modifiedBy;
private static final long serialVersionUID = 1L;
public Long getCurrencyId() {
return currencyId;
}
public void setCurrencyId(Long currencyId) {
this.currencyId = currencyId;
}
//... more getter, setter...
I expected
private Object currencyName;
become to
private String currencyName;
because this filed has datatype NVARCHAR2(128)
, and other fields are the same. How to fix it?
Mybatis generator doesn't know about type NVARCHAR2
it only knows NVARCHAR
type.
You can create your own JavaTypeResolver which can extend default JavaTypeResolverDefaultImpl
and add additional types to typeMap
.