前言

最近启动了一个新的项目发现,每当一个新项目的启动往往需要从头搭建一个“框架”,其中虽然很多基础代码可以Copy,但也会浪费不少时间。

基于这个情况,我打算在GitHub上创建了一个公开库scaffold用来存放平时常用的脚手架项目。

脚手架仓库地址:https://github.com/majian159/scaffold

规划

实现的脚手架有:

  • Java

    • Spring Boot + MyBatis

规划的脚手架有:

  • Java

    • Spring Boot + JPA
    • Spring Boot + MyBatis
  • Web
    • Ant design Pro
    • antd

springboot-mybatis-scaffold

第一波因为项目需求先传了 基于 sb + mybatis 的脚手架,其实我个人更喜欢 sb + jpa + ddd 的脚手架,后续在整理出来。

介绍

这是一个基于 SpringBoot + MyBatis + MyBatis Generator 的脚手架项目。

脚手架默认实现了一个 department RESTful API,用来演示。

脚手架集成内容

  • Spring Boot
  • Spring Security
  • MyBatis
  • MyBatis Generator
  • PageHelper
  • Swagger-UI

目录结构

scaffold
├── scaffold-api # REST API 模块
├── scaffold-common # 公共代码模块
└── scaffold-mbg # MyBatis Generator 及生成的内容

环境

  • JDK8
  • Lombok

脚手架配置

项目、程序包名称

使用 IDE 等工具进行批量全局替换。

Spring

  • 开启 @Async 线程池使用 ForkJoinPool.commonPool()
  • @EnableScheduling
  • @EnableSwagger2
  • datasource
    • MySQL
    • hikari
      • 最小空闲连接 5
      • 连接超时 15秒
      • 最大连接池大小 20
  • jackson
    • 不包含 null 值的属性

MyBatis

  • Mapper扫描路径

    • 当前项目下的 dao/*.xml (项目中自定义的Mapper xml)
    • 全局 mapper/*.xml (用于mbg生成的Mapper xml)

MBG

这边只是简化了 generatorConfig.xml 的配置,如有个性化需求可直接修改 generatorConfig.xml

scaffold-mbg/src/main/resources/generator.properties

配置键 说明 默认值
jdbc.driverClass JDBC驱动类 com.mysql.cj.jdbc.Driver
jdbc.connectionURL JDBC URL jdbc:mysql://localhost/scaffold?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.userId 数据库用户名 root
jdbc.password 数据库密码 root
common.basePackage 基础的包名 com.scaffold.springboot.mybatis.mbg
common.basePath 基础的路径 scaffold-mbg

Application

scaffold-api/src/main/resources/application.yml

配置键 说明 默认值
application.basePackage 基础 package,用来简化项目改名后带来的负担 com.scaffold.springboot.mybatis

RestControllerAdvice

当 Controller 抛出 ServiceException, ApiException 异常时会经由 Advice 自动包装成 ApiErrorViewModel, 并返回对应的 HttpStatusCode.

写在最后

这是一个高个人意愿的脚手架仓库,大家可以不用完全使用,只是参考部分内容,希望对大家有所帮助

脚手架仓库地址:https://github.com/majian159/scaffold

"阅读原文" 可直达 GitHub 库

项目脚手架 - 《Spring Boot + MyBatis + MyBatis Generator》的更多相关文章

  1. spring boot集成mybatis(3) - mybatis generator 配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  2. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

  3. Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)

    1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  4. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  5. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  6. spring boot集成mybatis(1)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  7. spring boot集成mybatis(2) - 使用pagehelper实现分页

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  8. Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...

  9. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

  10. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

随机推荐

  1. 你会选永生吗?NASA实验为火星宇航员提供年龄逆转药

    ​​宇宙辐射不仅是宇航员面临的问题.在乘坐飞机的过程中,我们所有人都会暴露在宇宙辐射中.一趟从伦敦到新加坡再到墨尔本的飞行中,人体受到的辐射量就相当于进行一次胸部X射线透视. ​在去年12月NASA举 ...

  2. webpack配置中环境变量-process.env. NODE_ENV

    背景 webpack有一特性就是可以让使用者灵活的在不同环境(开发环境,生产环境等)进行相应的特性的策略打包,比如: 是否使用反向代理使用接口,针对不同的静态资源(如图片等)是直接拷贝还是进行打包编译 ...

  3. Linux命令学习神器!命令看不懂直接给你解释!

    大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务. 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么 ...

  4. vue——一个页面实现音乐播放器

    请忽略下面这段文字年关将至,时间好歹又多出了些许.却不敢过度消遣.岁月未曾饶过我,我亦不想饶过岁月.且将它塞得膨胀,让这一年看似加更充实.不曾料想我一个爱些风花雪月.研墨行歌之人,却做起了碼农这一行当 ...

  5. 超详细,多图文介绍redis集群方式并搭建redis伪集群

    超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...

  6. vue cli web pack 全局引入jquery

    之前 装过,装 npm i —save  jquery  然后直接执行了第二步 往后 1,首先在 package.json 里加入, 然后 npm install 2, 在webpack.base.c ...

  7. javascript中this指向的问题

    javascript中this只有函数执行时候才能确定到底指向谁,实际this最终指向是那个调用它的对象. 1,匿名函数中的this——window function foo(){ var lastN ...

  8. GPS授时器简介

    GPS授时器简介 GPS是全球定位系统的简称.GPS定位卫星在全球范围内进行定位.导航的系统.GPS所具有的全天候.高精度和自动测量的特点,已经融入到国民经济建设.国防建设和社会发展的各个领域.而在授 ...

  9. java算法--稀疏数组

    数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ...

  10. JS中的reduce()详解

    reduce()作为一个循环使用.接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组. 应用  作为累加器使用 var a=[4,5,6,7,8] //item代表一次回调的值 初 ...