日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

怎么运行Mybatis代码生成器MGB

發(fā)布時(shí)間:2024/1/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么运行Mybatis代码生成器MGB 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

方式一:作為 Maven Plugin?
mvn mybatis-generator:generate
使用場(chǎng)景: 對(duì)逆向工程定制較多,項(xiàng)目工程結(jié)構(gòu)比較單一的情況

POM文件下需要以下插件

<build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><configuration><verbose>true</verbose><overwite>true</overwite></configuration></plugin></plugins> </build>

運(yùn)行mvn命令兩種方式

1),執(zhí)行項(xiàng)目下的Plugins插件,Plugins->mybatis-generatro->mybats-generator.generate,

執(zhí)行完成會(huì)自動(dòng)生成相關(guān)文件

2):Run/Debug Configurations配置mvn命令,執(zhí)行run

1. working directory 指定項(xiàng)目所在的路徑;

2. Command line:??mybatis-generator:generate;

?3. 配置完成后運(yùn)行,會(huì)自動(dòng)生成文件

?此過(guò)程常見(jiàn)錯(cuò)誤:?

一、錯(cuò)誤提示: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配置文件創(chuàng)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


? ? 使用場(chǎng)景:對(duì)逆向工程定制較少,項(xiàng)目工程結(jié)構(gòu)比較復(fù)雜的情況?

手動(dòng)新建目錄結(jié)構(gòu)

?

工程結(jié)構(gòu):

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><!-- 加載數(shù)據(jù)庫(kù)驅(qū)動(dòng) --><classPathEntry location="mysql-connector-java-8.0.25.jar" /><!-- context:生成一組對(duì)象的環(huán)境 id:必選,上下文id,用于在生成錯(cuò)誤時(shí)提示 defaultModelType:指定生成對(duì)象的樣式 1,conditional:類(lèi)似hierarchical;2,flat:所有內(nèi)容(主鍵,blob)等全部生成在一個(gè)對(duì)象中,推薦使用; 3,hierarchical:主鍵生成一個(gè)XXKey對(duì)象(key class),Blob等單獨(dú)生成一個(gè)對(duì)象,其他簡(jiǎn)單屬性在一個(gè)對(duì)象中(record class) targetRuntime: 1,MyBatis3:默認(rèn)的值,生成基于MyBatis3.x以上版本的內(nèi)容,包括XXXBySample; 2,MyBatis3Simple:類(lèi)似MyBatis3,只是不生成XXXBySample; --><context id="context1" targetRuntime="MyBatis3" defaultModelType="flat"><!-- 生成的Java文件的編碼 --><property name="javaFileEncoding" value="UTF-8"/><commentGenerator><!-- 是否去除自動(dòng)生成的注釋 true:是 : false:否 --><property name="suppressAllComments" value="false" /><!-- 阻止注釋中包含時(shí)間戳 true:是 : false:否 --><property name="suppressDate" value="true" /><!-- 注釋是否包含數(shù)據(jù)庫(kù)表的注釋信息 true:是 : false:否 --><property name="addRemarkComments" value="true" /></commentGenerator><!--數(shù)據(jù)庫(kù)連接的信息:驅(qū)動(dòng)類(lèi)、連接地址、用戶(hù)名、密碼 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/runoob" userId="root" password="123" /><!-- java模型創(chuàng)建器,是必須要的元素 負(fù)責(zé):1,key類(lèi)(見(jiàn)context的defaultModelType);2,java類(lèi);3,查詢(xún)類(lèi)targetPackage:生成的類(lèi)要放的包,真實(shí)的包受enableSubPackages屬性控制;targetProject:目標(biāo)項(xiàng)目,指定一個(gè)存在的目錄下,生成的內(nèi)容會(huì)放到指定目錄中,如果目錄不存在,MBG不會(huì)自動(dòng)建目錄--><javaModelGenerator targetPackage="com.enjoylearning.mybatis.entity" targetProject="src/main/java"><!-- 設(shè)置一個(gè)根對(duì)象,如果設(shè)置了這個(gè)根對(duì)象,那么生成的keyClass或者recordClass會(huì)繼承這個(gè)類(lèi);在Table的rootClass屬性中可以覆蓋該選項(xiàng)注意:如果在key class或者record class中有root class相同的屬性,MBG就不會(huì)重新生成這些屬性了,包括:1,屬性名相同,類(lèi)型相同,有相同的getter/setter方法;--><property name="rootClass" value="com.enjoylearning.mybatis.entity.BaseEntity" /></javaModelGenerator><!-- 生成SQL map的XML文件生成器,targetPackage:生成的類(lèi)要放的包,真實(shí)的包受enableSubPackages屬性控制;targetProject:目標(biāo)項(xiàng)目,指定一個(gè)存在的目錄下,生成的內(nèi)容會(huì)放到指定目錄中,如果目錄不存在,MBG不會(huì)自動(dòng)建目錄--><sqlMapGenerator targetPackage="." targetProject="src/main/resources/mapper"></sqlMapGenerator><!-- 對(duì)于mybatis來(lái)說(shuō),即生成Mapper接口,注意,如果沒(méi)有配置該元素,那么默認(rèn)不會(huì)生成Mapper接口 type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):1,ANNOTATEDMAPPER:會(huì)生成使用Mapper接口+Annotation的方式創(chuàng)建(SQL生成在annotation中),不會(huì)生成對(duì)應(yīng)的XML;2,MIXEDMAPPER:使用混合配置,會(huì)生成Mapper接口,并適當(dāng)添加合適的Annotation,但是XML會(huì)生成在XML中;3,XMLMAPPER:會(huì)生成Mapper接口,接口完全依賴(lài)XML;注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER--> <javaClientGenerator targetPackage="com.learn.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER" /><!-- shema 數(shù)據(jù)庫(kù) tableName表明 % 代表數(shù)據(jù)庫(kù)庫(kù)所有表,如果單表填寫(xiě)表名 --><table schema="${jdbc_username}" tableName="%" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false"enableSelectByExample="false" selectByExampleQueryId="false"><generatedKey column="id" sqlStatement="MySql"/></table></context> </generatorConfiguration>

執(zhí)行命令結(jié)果如下:

?

常見(jiàn)錯(cuò)誤:

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就好了

?

總結(jié)

以上是生活随笔為你收集整理的怎么运行Mybatis代码生成器MGB的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。