Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions mybatis-plus-generator-ui-starter-common/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.github.davidfantasy</groupId>
<artifactId>mybatis-plus-generator-ui</artifactId>
<version>2.0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis-plus-generator-ui-starter-common</artifactId>
<name>mybatis-plus-generator-ui-starter-common</name>
<description>mybatis-plus-generator-ui-starter-common</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-jre</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.15.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.4</version>
</dependency>
<!--用于处理SQL格式化-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.23</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.26.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.davidfantasy.mybatisplus.generatorui;
package com.github.davidfantasy.mybatisplus.generatorui.common;

import com.github.davidfantasy.mybatisplus.generatorui.common.core.properties.GeneratorConfig;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -8,9 +9,7 @@
import org.springframework.boot.autoconfigure.web.servlet.*;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;

Expand All @@ -34,37 +33,22 @@
@Slf4j
public class MybatisPlusToolsApplication {

private static GeneratorConfig generatorConfig;

public static void run(GeneratorConfig generatorConfig) {
public static void run(Class<?> clazz, String[] args, GeneratorConfig generatorConfig) {
if (Strings.isNullOrEmpty(generatorConfig.getJdbcUrl())) {
throw new IllegalArgumentException("jdbcUrl必须要设置");
}
MybatisPlusToolsApplication.generatorConfig = generatorConfig;

//启动MyBatis
Map<String, Object> props = Maps.newHashMap();
new SpringApplicationBuilder()
props.put("spring.datasource.url", generatorConfig.getJdbcUrl());
props.put("spring.datasource.driver-class-name", generatorConfig.getDriverClassName());
props.put("spring.datasource.username", generatorConfig.getUserName());
props.put("spring.datasource.password", generatorConfig.getPassword());
ConfigurableApplicationContext run = new SpringApplicationBuilder()
.properties(props)
.sources(MybatisPlusToolsApplication.class)
.run();
}
.sources(clazz)
.run(args);

@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> containerConfig(GeneratorConfig config) {
return factory -> {
if (config.getPort() != null) {
factory.setPort(MybatisPlusToolsApplication.generatorConfig.getPort());
} else {
factory.setPort(8080);
}
factory.setContextPath("");
};
}

@Bean
public GeneratorConfig generatorConfig() {
return MybatisPlusToolsApplication.generatorConfig;
}


}

Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.github.davidfantasy.mybatisplus.generatorui;
package com.github.davidfantasy.mybatisplus.generatorui.common;

import com.github.davidfantasy.mybatisplus.generatorui.common.ServiceException;
import com.github.davidfantasy.mybatisplus.generatorui.util.OSUtil;
import com.github.davidfantasy.mybatisplus.generatorui.util.PathUtil;
import com.github.davidfantasy.mybatisplus.generatorui.common.api.ServiceException;
import com.github.davidfantasy.mybatisplus.generatorui.common.util.OSUtil;
import com.github.davidfantasy.mybatisplus.generatorui.common.util.PathUtil;
import com.google.common.base.Strings;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -12,22 +12,23 @@
import java.net.URLDecoder;
import java.util.regex.Pattern;

import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.*;
import static com.github.davidfantasy.mybatisplus.generatorui.common.dto.Constant.PACKAGE_JAVA_PREFIX;
import static com.github.davidfantasy.mybatisplus.generatorui.common.dto.Constant.PACKAGE_RESOURCES_PREFIX;

@Getter
@Slf4j
public class ProjectPathResolver {

private final String basePackage;

private final Pattern packagePattern = Pattern.compile("[a-zA-Z]+[0-9a-zA-Z_]*(\\.[a-zA-Z]+[0-9a-zA-Z_]*)*");

private String sourcePath;

private String resourcePath;

private String baseProjectPath;

private final String basePackage;

private final Pattern packagePattern = Pattern.compile("[a-zA-Z]+[0-9a-zA-Z_]*(\\.[a-zA-Z]+[0-9a-zA-Z_]*)*");

public ProjectPathResolver(String basePackage) {
this.basePackage = basePackage;
ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
Expand Down Expand Up @@ -112,7 +113,7 @@ public String convertPathToPackage(String path) {
}
String packageStr = path.replace(File.separator, ".");
if (packageStr.startsWith(".")) {
packageStr = packageStr.substring(1, packageStr.length());
packageStr = packageStr.substring(1);
}
return packageStr;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.github.davidfantasy.mybatisplus.generatorui.common;
package com.github.davidfantasy.mybatisplus.generatorui.common.api;

import com.github.davidfantasy.mybatisplus.generatorui.util.JsonUtil;
import com.github.davidfantasy.mybatisplus.generatorui.common.util.JsonUtil;

/**
* 统一API响应结果封装
Expand All @@ -22,15 +22,15 @@ public class Result {
*/
private Object data;

public int getCode() {
return code;
}

public Result setCode(ResultCode resultCode) {
this.code = resultCode.code;
return this;
}

public int getCode() {
return code;
}

public Result setCode(int code) {
this.code = code;
return this;
Expand Down Expand Up @@ -58,5 +58,5 @@ public Result setData(Object data) {
public String toString() {
return JsonUtil.obj2json(this);
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.davidfantasy.mybatisplus.generatorui.common;
package com.github.davidfantasy.mybatisplus.generatorui.common.api;

/**
* 响应码枚举,参考HTTP状态码的语义
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.davidfantasy.mybatisplus.generatorui.common;
package com.github.davidfantasy.mybatisplus.generatorui.common.api;

/**
* 响应结果生成工具
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.davidfantasy.mybatisplus.generatorui.common;
package com.github.davidfantasy.mybatisplus.generatorui.common.api;

/**
* 服务(业务)异常如“ 账号或密码错误 ”,该异常只做INFO级别的日志记录 @see WebMvcConfigurer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,64 @@
package com.github.davidfantasy.mybatisplus.generatorui;
package com.github.davidfantasy.mybatisplus.generatorui.common.core.configuration;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.BeetlTemplateEngine;
import com.github.davidfantasy.mybatisplus.generatorui.service.UserConfigStore;
import com.github.davidfantasy.mybatisplus.generatorui.sqlparser.DynamicParamSqlEnhancer;
import com.github.davidfantasy.mybatisplus.generatorui.common.core.properties.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.common.ProjectPathResolver;
import com.github.davidfantasy.mybatisplus.generatorui.common.mbp.BeetlTemplateEngine;
import com.github.davidfantasy.mybatisplus.generatorui.common.service.UserConfigStore;
import com.github.davidfantasy.mybatisplus.generatorui.common.sqlparser.DynamicParamSqlEnhancer;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

@Configuration
public class ApplicationConfigure {
/**
* 通过注入一个WebServerFactoryCustomizer来达到修改服务器端口的目的
*
* @param config
* @return
*/
@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> containerConfig(GeneratorConfig config) {
return factory -> {
if (config.getPort() != null) {
factory.setPort(config.getPort());
} else {
factory.setPort(8080);
}
factory.setContextPath("");
};
}

@Bean
public ProjectPathResolver projectPathResolver(GeneratorConfig config) {
return new ProjectPathResolver(config.getBasePackage());
}

/**
* 如果没有,就主动注入一个
*
* @param config
* @return
*/
@ConditionalOnMissingBean(DataSource.class)
@Bean
public DataSource dataSource(GeneratorConfig config) {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(config.getJdbcUrl());
ds.setUsername(config.getUserName());
ds.setPassword(config.getPassword());
ds.setDriverClassName(config.getDriverClassName());
return ds;
}

/**
* 这里的DataSourceConfig仅用于获取tablesql,查询数据库元数据,和代码生成无关
Expand All @@ -35,15 +76,14 @@ public DataSourceConfig mbpDsConfig(GeneratorConfig config) {
* 用于查询数据库元数据
*/
@Bean
public JdbcTemplate jdbcTemplate(GeneratorConfig config) {
public JdbcTemplate jdbcTemplate(GeneratorConfig config, ObjectProvider<DataSource> dataSources) {
if (StrUtil.isBlank(config.getJdbcUrl())) {
throw new IllegalArgumentException("必须指定jdbcUrl用于创建数据源");
}
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(config.getJdbcUrl());
ds.setUsername(config.getUserName());
ds.setPassword(config.getPassword());
ds.setDriverClassName(config.getDriverClassName());
DataSource ds = dataSources.getIfAvailable();
if (ds == null) {
ds = dataSource(config);
}
return new JdbcTemplate(ds);
}

Expand Down
Loading