1. 程式人生 > >mybatis-generator 的坑我都走了一遍

mybatis-generator 的坑我都走了一遍

一、簡介

mybatis-geneator是一款mybatis自動程式碼生成工具,可以通過配置,快速生成mapper和xml檔案。

二、配置方法

在專案的pom檔案中新增外掛配置

<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
在main的resource目錄下建立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>
<!--匯入屬性配置-->
<properties resource="datasource.properties"></properties>

<!-- 指定資料庫驅動的jdbc驅動jar包的位置 -->
<classPathEntry location="${db.driverLocation}" />

<!-- context 是逆向工程的主要配置資訊 -->
<!-- id:起個名字 -->
<!-- targetRuntime:設定生成的檔案適用於那個 mybatis 版本 -->
<context id="default" targetRuntime="MyBatis3">

<!--optional,旨在建立class時,對註釋進行控制-->
<commentGenerator>
<property name="suppressDate" value="true" />
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>

<!--jdbc的資料庫連線-->
<jdbcConnection driverClass="${db.driverClassName}"
connectionURL="${db.url}"
userId="${db.username}"
password="${db.password}">
</jdbcConnection>

<!--非必須,型別處理器,在資料庫型別和java型別之間的轉換控制-->
<javaTypeResolver>
<!-- 預設情況下資料庫中的 decimal,bigInt 在 Java 對應是 sql 下的 BigDecimal 類 -->
<!-- 不是 double 和 long 型別 -->
<!-- 使用常用的基本型別代替 sql 包下的引用型別 -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>

<!-- targetPackage:生成的實體類所在的包 -->
<!-- targetProject:生成的實體類所在的硬碟位置 -->
<javaModelGenerator targetPackage="com.mall.pojo"
targetProject=".\src\main\java">
<!-- 是否允許子包 -->
<property name="enableSubPackages" value="false" />
<!-- 是否對modal新增建構函式 -->
<property name="constructorBased" value="true" />
<!-- 是否清理從資料庫中查詢出的字串左右兩邊的空白字元 -->
<property name="trimStrings" value="true" />
<!-- 建立modal物件是否不可改變 即生成的modal物件不會有setter方法,只有構造方法 -->
<property name="immutable" value="false" />
</javaModelGenerator>

<!-- targetPackage 和 targetProject:生成的 mapper 檔案的包和位置 -->
<sqlMapGenerator targetPackage="mappers"
targetProject=".\src\main\resource">
<!-- 針對資料庫的一個配置,是否把 schema 作為字包名 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>

<!-- targetPackage 和 targetProject:生成的 interface 檔案的包和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.mall.dao" targetProject=".\src\main\java">
<!-- 針對 oracle 資料庫的一個配置,是否把 schema 作為字包名 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<table tableName="user" domainObjectName="User"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
generatorConfig.xml檔案中的一些配置資訊需要在配置檔案中新增

在同一目錄下建立datasource.properties檔案

db.driverLocation=C:/Users/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.199.193:3306/mall?characterEncoding=utf-8
db.username=root
db.password=123456
配置的三行的192.168.199.193需要替換成所在主機的IP,mall替換成資料庫名稱

配置第四行和第五行分別配置為資料庫連線的使用者名稱和密碼

在generatorConfig.xml檔案中新增完需要生成的表的配置後

 

雙擊圖中配置,就可以自動生成mapper和xml檔案了

但是!以上僅存在於順利的情況下!!!下面我會講一下我遇到的坑和相關的解決方法:)

問題一:在Maven Projects側根本就找不到mybatis-generator,無法雙擊

解決方法:開啟pom檔案,在pluginManagement標籤的下面建立plugins標籤,然後將mybatis-generator外掛配置移動到plugins標籤中,如圖

 

問題二:雙擊mybatis-generator後報錯

[ERROR] Error resolving version for plugin 'org.apache.maven.plugin:maven-compiler-plugin' from the repositories [local (C:\Users\.m2\repository), central (http://repo.maven.apache.org/maven2)]: Plugin not found in any plugin repository -> [Help 1]

解決方法:pom檔案中maven的配置要加version標籤,如圖

 

問題三:報錯

[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Cannot resolve classpath entry: C:Users.m2

解決方法:因為偷懶,datasource.properties檔案中的db.driverLocation值是直接在資料夾中複製貼上的,所以路徑的斜線都是“\”,只要改成“/”就可以了,上面的配置步驟中的配置內容已是正確內容

問題四:這個問題是後面幾個報錯的整合

報錯1:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'mall'@'219.143.190.211' (using password: YES) -> [Help 1]

報錯2:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: null,  message from server: "Host 'zs-HP.lan' is not allowed to connect to this MySQL server" -> [Help 1]

報錯3:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'root'@'%' to database 'mall' -> [Help 1]

報錯4:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: SELECT command denied to user 'root'@'zs-HP.lan' for table 'cart' -> [Help 1]

報錯5:[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mall: Access denied for user 'root'@'zs-HP.lan' (using password: YES) -> [Help 1]

以上報錯基本都是出於同一類問題,只要按照如下步驟操作,基本可以避免。

1、找到mysql bin目錄下的my.ini檔案,在[mysql]下面加上 skip-grant-tables  用於跳過密碼

2、mysql開啟mysql遠端訪問許可權(cmd以管理員身份執行)

登入到mysql:  mysql -uroot -ppwd
檢視user表:
mysql> use mysql
Database changed
mysql> select host,user,password,Grant_priv,Super_priv from user;
+--------------+---------+--------------------------------------+------------+------------+
| host | user | password | Grant_priv | Super_priv
+--------------+---------+-------------------------------------------+------------+--------
| LocalHost | root | *FED29C14B2E900D70B11B1F1B370F953BA51| N | Y
+--------------+---------+--------------------------------------+------------+------------+
1 row in set (0.00 sec)
將localhost修改成%。修改成%表示,所有主機都可以通過root使用者訪問資料庫。
       命令:mysql> update user set host = '%',Grant_priv='Y', Super_priv='Y'  where user = 'root';

       再次查看錶:mysql>use mysql

       檢視是否已經修改好

       最後!!!輸入命令:mysql> FLUSH PRIVILEGES; 重新整理之前修改的內容

       這才能生效!!!!!

3、修改資料庫表許可權

如果mysql客戶端(本人使用的是Navicate)選中表單機右鍵可以找到設定許可權選項,則勾選相應的操作即可

如果右鍵沒有設定許可權選項,則需要新增使用者,配置如下

 

然後雙擊管理使用者,即可進行許可權配置

 

完成以上步驟,基本可以解決大部分的報錯,如有其他問題,本人暫時還未遇到,請自行百度 :)

以上,感謝~

 https://blog.csdn.net/qq_40307945/article/details/81351302 

---------------------
作者:隔壁趙大壯
來源:CSDN
原文:https://blog.csdn.net/qq_40307945/article/details/81351302
版權宣告:本文為博主原創文章,轉載請附上博文連結!