怎么运行Mybatis代码生成器MGB
方式一:作為 Maven Plugin?
mvn mybatis-generator:generate
使用場景: 對逆向工程定制較多,項目工程結構比較單一的情況
POM文件下需要以下插件
運行mvn命令兩種方式
1),執行項目下的Plugins插件,Plugins->mybatis-generatro->mybats-generator.generate,
執行完成會自動生成相關文件
2):Run/Debug Configurations配置mvn命令,執行run
1. working directory 指定項目所在的路徑;
2. Command line:??mybatis-generator:generate;
?3. 配置完成后運行,會自動生成文件
?此過程常見錯誤:?
一、錯誤提示:Unexpected exception encountered during query.
java.sql.SQLException: Unexpected exception encountered during query.
解決方法:
更換使用新版的mysql-connector-java即可。
二:??Java 程序 使用 XML 配置文件
java程序
package com.learn.mybatis;import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.ResourceUtils;//@RunWith(SpringJUnit4ClassRunner.class) //@ContextConfiguration("classpath:applicationContext.xml") public class MybatisSpringTest { private SqlSessionFactory sqlSessionFactory;@Beforepublic void init() throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 1.讀取mybatis配置文件創SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);inputStream.close();}@Testpublic void mybatisGeneratorTest() throws FileNotFoundException{List<String> warnings = new ArrayList<String>(); boolean overwrite = true;String genCfg = "generatorConfig.xml"; File configFile = new File(getClass().getClassLoader().getResource(genCfg).getFile());ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = null; try { config = cp.parseConfiguration(configFile); } catch (IOException e) { e.printStackTrace(); } catch (XMLParserException e) { e.printStackTrace(); } DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = null; try { myBatisGenerator = new MyBatisGenerator(config, callback, warnings); } catch (InvalidConfigurationException e) { e.printStackTrace(); } try { myBatisGenerator.generate(null); } catch (SQLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }三:從命令提示符 使用 XML 配置文件?
? ? ?java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml?
或
? ? java -Dfile.encoding=UTF-8 -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite
? ? 使用場景:對逆向工程定制較少,項目工程結構比較復雜的情況?
手動新建目錄結構
?
工程結構:
mybatis代碼生成器配置文件,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="mysql-connector-java-8.0.25.jar" /><!-- context:生成一組對象的環境 id:必選,上下文id,用于在生成錯誤時提示 defaultModelType:指定生成對象的樣式 1,conditional:類似hierarchical;2,flat:所有內容(主鍵,blob)等全部生成在一個對象中,推薦使用; 3,hierarchical:主鍵生成一個XXKey對象(key class),Blob等單獨生成一個對象,其他簡單屬性在一個對象中(record class) targetRuntime: 1,MyBatis3:默認的值,生成基于MyBatis3.x以上版本的內容,包括XXXBySample; 2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample; --><context id="context1" targetRuntime="MyBatis3" defaultModelType="flat"><!-- 生成的Java文件的編碼 --><property name="javaFileEncoding" value="UTF-8"/><commentGenerator><!-- 是否去除自動生成的注釋 true:是 : false:否 --><property name="suppressAllComments" value="false" /><!-- 阻止注釋中包含時間戳 true:是 : false:否 --><property name="suppressDate" value="true" /><!-- 注釋是否包含數據庫表的注釋信息 true:是 : false:否 --><property name="addRemarkComments" value="true" /></commentGenerator><!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/runoob" userId="root" password="123" /><!-- java模型創建器,是必須要的元素 負責:1,key類(見context的defaultModelType);2,java類;3,查詢類targetPackage:生成的類要放的包,真實的包受enableSubPackages屬性控制;targetProject:目標項目,指定一個存在的目錄下,生成的內容會放到指定目錄中,如果目錄不存在,MBG不會自動建目錄--><javaModelGenerator targetPackage="com.enjoylearning.mybatis.entity" targetProject="src/main/java"><!-- 設置一個根對象,如果設置了這個根對象,那么生成的keyClass或者recordClass會繼承這個類;在Table的rootClass屬性中可以覆蓋該選項注意:如果在key class或者record class中有root class相同的屬性,MBG就不會重新生成這些屬性了,包括:1,屬性名相同,類型相同,有相同的getter/setter方法;--><property name="rootClass" value="com.enjoylearning.mybatis.entity.BaseEntity" /></javaModelGenerator><!-- 生成SQL map的XML文件生成器,targetPackage:生成的類要放的包,真實的包受enableSubPackages屬性控制;targetProject:目標項目,指定一個存在的目錄下,生成的內容會放到指定目錄中,如果目錄不存在,MBG不會自動建目錄--><sqlMapGenerator targetPackage="." targetProject="src/main/resources/mapper"></sqlMapGenerator><!-- 對于mybatis來說,即生成Mapper接口,注意,如果沒有配置該元素,那么默認不會生成Mapper接口 type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):1,ANNOTATEDMAPPER:會生成使用Mapper接口+Annotation的方式創建(SQL生成在annotation中),不會生成對應的XML;2,MIXEDMAPPER:使用混合配置,會生成Mapper接口,并適當添加合適的Annotation,但是XML會生成在XML中;3,XMLMAPPER:會生成Mapper接口,接口完全依賴XML;注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER--> <javaClientGenerator targetPackage="com.learn.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER" /><!-- shema 數據庫 tableName表明 % 代表數據庫庫所有表,如果單表填寫表名 --><table schema="${jdbc_username}" tableName="%" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false"enableSelectByExample="false" selectByExampleQueryId="false"><generatedKey column="id" sqlStatement="MySql"/></table></context> </generatorConfiguration>執行命令結果如下:
?
常見錯誤:
java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
更換使用新版的mysql-connector-java即可。我由5.1.18改成8.0.25就好了
?
總結
以上是生活随笔為你收集整理的怎么运行Mybatis代码生成器MGB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 80后转
- 下一篇: PAT | 1004 成绩排名 (C语言