tianyun 2 lat temu
rodzic
commit
1fbd5e7596

+ 2 - 1
.gitignore

@@ -1,3 +1,4 @@
 *.class
 target
-*.iml
+*.iml
+.idea

+ 28 - 0
mybatis-plus/README.md

@@ -0,0 +1,28 @@
+client需要复制的文件
+
+- MybatisPlusConfig
+- 数据库链接配置
+```xml
+<!--mysql-->
+<dependency>
+    <groupId>mysql</groupId>
+    <artifactId>mysql-connector-java</artifactId>
+    <version>8.0.27</version>
+</dependency>
+<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
+<dependency>
+    <groupId>com.baomidou</groupId>
+    <artifactId>mybatis-plus-boot-starter</artifactId>
+    <version>3.5.1</version>
+</dependency>
+<dependency>
+    <groupId>org.projectlombok</groupId>
+    <artifactId>lombok</artifactId>
+    <version>1.18.22</version>
+</dependency>
+<dependency>
+    <groupId>com.alibaba</groupId>
+    <artifactId>druid</artifactId>
+    <version>1.2.0</version>
+</dependency>
+```

+ 69 - 0
mybatis-plus/pom.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.alvin</groupId>
+    <artifactId>alvin-mybatis-plus-generator</artifactId>
+    <version>1.0</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <!--mysql-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.28</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.23</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <!--使用Maven编译可执行的jar-->
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <appendAssemblyId>false</appendAssemblyId>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <archive>
+                        <manifest>
+                            <mainClass>com.alvin.Generator</mainClass>
+                        </manifest>
+                    </archive>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 73 - 0
mybatis-plus/src/main/java/com/alvin/Generator.java

@@ -0,0 +1,73 @@
+package com.alvin;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.OutputFile;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.baomidou.mybatisplus.generator.fill.Column;
+
+import java.util.Collections;
+
+public class Generator {
+
+
+    public static void main(String[] args) {
+        String db_url = "jdbc:mysql://localhost:3306/aj_report";
+        String db_username = "root";
+        String db_password = "root";
+
+        String javaDir = "C:/code";
+        String parentPackage = "com.alvin.db";
+        String tableName = "access_role";
+
+        String author = "tianyun";
+        String tablePrefix = "t_";
+
+
+        generatorToFile(db_url, db_username, db_password, author, javaDir, parentPackage, tableName, tablePrefix);
+    }
+
+    private static void generatorToFile(String db_url, String db_username, String db_password, String author,
+                                        String javaDir, String parentPackage, String tableName, String tablePrefix) {
+        FastAutoGenerator.create(db_url, db_username, db_password)
+                //===全局配置
+                .globalConfig(builder -> {
+                    builder.author(author) // 设置作者
+                            .dateType(DateType.ONLY_DATE) // 设置日期为 Date
+                            //.enableSwagger() // 开启 swagger 模式
+                            .fileOverride() // 覆盖已生成文件
+                            .outputDir(javaDir); // 指定输出目录
+                })
+                //===模块配置
+                .packageConfig(builder -> {
+                    builder.parent(parentPackage) // 设置父包名
+                            .moduleName("") // 设置父包模块名
+                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, javaDir + "/../resources/mapper")); // 设置mapperXml生成路径
+                })
+                .strategyConfig(builder -> {
+                    //Controller
+                    builder.controllerBuilder().enableHyphenStyle()  // 开启驼峰转连字符
+                            .enableRestStyle();  // 开启生成@RestController 控制器
+                    //mapper
+                    builder.mapperBuilder().enableMapperAnnotation().build();
+                    //实体类
+                    builder.entityBuilder()
+                            .enableLombok()
+                            .addTableFills(
+                                    new Column("create_time", FieldFill.INSERT),
+                                    new Column("update_time", FieldFill.INSERT_UPDATE)
+                            );
+                    builder.addInclude(tableName) // 设置需要生成的表名
+                            .addTablePrefix(tablePrefix)
+
+                    ;
+
+                })
+                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
+                .templateConfig(builder -> builder.controller("templates/controller1.java"))  // 设置为空则不会生成该文件
+                //.templateConfig(builder -> builder.service(""))
+                .templateConfig(builder -> builder.serviceImpl("templates/serviceImpl1.java"))
+                .execute();
+    }
+}

+ 36 - 0
mybatis-plus/src/main/java/com/alvin/MybatisPlusConfig.java

@@ -0,0 +1,36 @@
+package com.alvin;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class MybatisPlusConfig implements MetaObjectHandler {
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        this.setFieldValByName("createTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+    }
+
+    /**
+     * 分页插件配置
+     */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 30 - 0
mybatis-plus/src/main/resources/application.yml

@@ -0,0 +1,30 @@
+spring:
+  profiles:
+    active: dev
+  application:
+    name: aj-report
+  servlet:
+    multipart:
+      max-file-size: 10MB #上传图片大小限制为10MB
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+  messages:
+    basename: i18n/messages
+  datasource:
+    url: jdbc:mysql://localhost:3306/aj_report?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
+    username: root
+    password: root
+  #数据源连接池配置
+  druid:
+    initial-size: 10 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
+    min-idle: 10 # 最小连接池数量
+    maxActive: 200 # 最大连接池数量
+    maxWait: 3000 # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置
+    timeBetweenEvictionRunsMillis: 60000 # 关闭空闲连接的检测时间间隔.Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
+    minEvictableIdleTimeMillis: 300000 # 连接的最小生存时间.连接保持空闲而不被驱逐的最小时间
+    testWhileIdle: true # 申请连接时检测空闲时间,根据空闲时间再检测连接是否有效.建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRun
+    poolPreparedStatements: true # 开启PSCache
+    maxPoolPreparedStatementPerConnectionSize: 20 #设置PSCache值
+    connectionErrorRetryAttempts: 3 # 连接出错后再尝试连接三次
+    breakAfterAcquireFailure: true # 数据库服务宕机自动重连机制
+    timeBetweenConnectErrorMillis: 300000 # 连接出错后重试时间间隔

+ 69 - 0
mybatis-plus/src/main/resources/templates/controller1.java.ftl

@@ -0,0 +1,69 @@
+package ${package.Controller};
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import ${package.Entity}.${entity};
+import ${package.Service}.${table.serviceName};
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+<#if superControllerClassPackage??>
+import ${superControllerClassPackage};
+</#if>
+
+/**
+* <p>
+    * ${table.comment!} 前端控制器
+    * </p>
+*
+* @author ${author}
+* @since ${date}
+*/
+<#if restControllerStyle>
+@RestController
+<#else>
+@Controller
+</#if>
+@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
+<#if kotlin>
+    class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
+<#else>
+    <#if superControllerClass??>
+public class ${table.controllerName} extends ${superControllerClass} {
+    <#else>
+public class ${table.controllerName} {
+    </#if>
+
+    @Resource
+    private ${table.serviceName} ${table.entityPath}Service;
+
+    @PostMapping
+    public Boolean save(@RequestBody ${entity} ${table.entityPath}) {
+    return ${table.entityPath}Service.saveOrUpdate(${table.entityPath});
+    }
+
+    @DeleteMapping("/{id}")
+    public Boolean delete(@PathVariable Integer id) {
+    return ${table.entityPath}Service.removeById(id);
+    }
+
+    @GetMapping
+    public List<${entity}> findAll() {
+    return ${table.entityPath}Service.list();
+    }
+
+    @GetMapping("/{id}")
+    public List<${entity}> findOne(@PathVariable Integer id) {
+    return ${table.entityPath}Service.list();
+    }
+
+    @GetMapping("/page")
+    public Page<${entity}> findPage(@RequestParam Integer pageNum,
+    @RequestParam Integer pageSize) {
+    return ${table.entityPath}Service.page(new Page<>(pageNum, pageSize));
+    }
+}
+</#if>

+ 28 - 0
mybatis-plus/src/main/resources/templates/serviceImpl1.java.ftl

@@ -0,0 +1,28 @@
+package ${package.ServiceImpl};
+
+import ${package.Entity}.${entity};
+import ${package.Mapper}.${table.mapperName};
+import ${package.Service}.${table.serviceName};
+import ${superServiceImplClassPackage};
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ${table.comment!} 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+@Service
+<#if kotlin>
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
+
+}
+<#else>
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
+
+  @Resource
+  private ${table.mapperName} ${table.entityPath}Mapper;
+}
+</#if>