Skip to content

Commit fc109d4

Browse files
committed
完善驱动查找方式,解决jar包运行找不到驱动的问题
1 parent d2ecab4 commit fc109d4

File tree

8 files changed

+23
-20
lines changed

8 files changed

+23
-20
lines changed

README.md

+5-9
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,23 @@ mybatis-generator-gui是基于[mybatis generator](http://www.mybatis.org/generat
2323
cd mybatis-generator-gui
2424
mvn jfx:jar
2525
### 启动本软件
26-
* 方法一: 下载的zip包
2726

28-
解压zip包,如果安装好了JRE或者JDK 8,直接cd至软件目录运行
29-
30-
java -jar mybatis-generator-gui.jar
31-
32-
* 方法二: 自助构建
27+
* 方法一: 自助构建
3328

3429

30+
mvn install:install-file -Dfile=./src/main/resources/connector/ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -DgeneratePom=true
3531
cd target/jfx/app/
3632
java -jar mybatis-generator-gui.jar
3733

3834

39-
* 方法三: IDE中运行
35+
* 方法二: IDE中运行
4036

41-
Eclipse or IntelliJ IDEA中启动, 找到MainUI类并运行就可以了
37+
Eclipse or IntelliJ IDEA中启动, 找到```com.zzg.mybatis.generator.MainUI```类并运行就可以了
4238

4339
#### Oracle用户请注意
4440
由于Oracle的驱动在maven官方的repository中没有,Oracle的用户需要手动安装一下驱动,cd到项目目录下,执行:
4541

46-
mvn install:install-file -Dfile=./src/main/resources/connector/ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -DgeneratePom=true
42+
4743

4844

4945
### 文档

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.zzg</groupId>
55
<artifactId>mybatis-generator-gui</artifactId>
6-
<version>0.6</version>
6+
<version>0.7.2</version>
77

88
<properties>
99
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/java/com/zzg/mybatis/generator/bridge/MybatisGeneratorBridge.java

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.mybatis.generator.api.ShellCallback;
1313
import org.mybatis.generator.config.*;
1414
import org.mybatis.generator.internal.DefaultShellCallback;
15+
import org.slf4j.Logger;
16+
import org.slf4j.LoggerFactory;
1517

1618
import java.util.ArrayList;
1719
import java.util.HashSet;
@@ -26,6 +28,8 @@
2628
*/
2729
public class MybatisGeneratorBridge {
2830

31+
private static final Logger _LOG = LoggerFactory.getLogger(MybatisGeneratorBridge.class);
32+
2933
private GeneratorConfig generatorConfig;
3034

3135
private DatabaseConfig selectedDatabaseConfig;
@@ -57,6 +61,7 @@ public void setDatabaseConfig(DatabaseConfig databaseConfig) {
5761
public void generate() throws Exception {
5862
Configuration config = new Configuration();
5963
String connectorLibPath = ConfigHelper.findConnectorLibPath(selectedDatabaseConfig.getDbType());
64+
_LOG.info("connectorLibPath: {}", connectorLibPath);
6065
config.addClasspathEntry(connectorLibPath);
6166
Context context = new Context(ModelType.CONDITIONAL);
6267
config.addContext(context);

src/main/java/com/zzg/mybatis/generator/model/DbType.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
*/
66
public enum DbType {
77

8-
MySQL("com.mysql.jdbc.Driver", "jdbc:mysql://%s:%s/%s?useUnicode=true&useSSL=false&characterEncoding=%s", "connector/mysql-connector-java-5.1.38.jar"),
9-
Oracle("oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@%s:%s:%s", "connector/ojdbc14.jar"),
10-
PostgreSQL("org.postgresql.Driver", "jdbc:postgresql://%s:%s/%s", "connector/postgresql-9.4.1209.jar");
8+
MySQL("com.mysql.jdbc.Driver", "jdbc:mysql://%s:%s/%s?useUnicode=true&useSSL=false&characterEncoding=%s", "mysql-connector-java-5.1.38.jar"),
9+
Oracle("oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@%s:%s:%s", "ojdbc14.jar"),
10+
PostgreSQL("org.postgresql.Driver", "jdbc:postgresql://%s:%s/%s", "postgresql-9.4.1209.jar");
1111

1212
private final String driverClass;
1313
private final String connectionUrlPattern;

src/main/java/com/zzg/mybatis/generator/util/ConfigHelper.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.zzg.mybatis.generator.model.DatabaseConfig;
55
import com.zzg.mybatis.generator.model.DbType;
66
import com.zzg.mybatis.generator.model.GeneratorConfig;
7+
import org.apache.commons.io.FileUtils;
78
import org.slf4j.Logger;
89
import org.slf4j.LoggerFactory;
910

@@ -200,17 +201,18 @@ public static int deleteGeneratorConfig(String name) throws Exception {
200201
public static String findConnectorLibPath(String dbType) {
201202
DbType type = DbType.valueOf(dbType);
202203
String connectorJarFileName = type.getConnectorJarFile();
203-
URL resource = Thread.currentThread().getContextClassLoader().getResource(connectorJarFileName);
204+
URL resource = Thread.currentThread().getContextClassLoader().getResource("logback.xml");
205+
_LOG.info("jar resource: {}", resource);
204206
if (resource != null) {
205-
try {
206-
return resource.toURI().getRawPath();
207-
} catch (URISyntaxException e) {
208-
// ignore
207+
try {
208+
File file = new File(resource.toURI().getRawPath() + "/../lib/" + type.getConnectorJarFile());
209+
return file.getCanonicalPath();
210+
} catch (Exception e) {
211+
throw new RuntimeException("找不到驱动文件,请联系开发者");
209212
}
210213
} else {
211-
throw new RuntimeException("connector can't find");
214+
throw new RuntimeException("lib can't find");
212215
}
213-
return null;
214216
}
215217

216218

0 commit comments

Comments
 (0)