搭建Springboot項目並集成Mybatis-Plus

1. idea建立Springboot項目


建立項目:
image
選擇spring Initializr,注意要選擇jdk,使用默認的spring.io這 樣就不用再去寫pom文件了
image
輸入項目名稱:
image
選擇Spring Web
image.png
目錄結構:
imagejava

2. 建立數據庫表


表結構以下mysql

id name age email
1 Jone 18 test1@baomidou.com
2 Jack 20 test2@baomidou.com
3 Tom 28 test3@baomidou.com
4 Sandy 21 test4@baomidou.com
5 Billie 24 test5@baomidou.com

其對應的數據庫 Schema 腳本以下:git

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
 id BIGINT(20) NOT NULL COMMENT '主鍵ID',
 name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
 age INT(11) NULL DEFAULT NULL COMMENT '年齡',
 email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
 PRIMARY KEY (id)
);

其對應的數據庫 Data 腳本以下:github

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

**注意:把主鍵id設爲自動遞增**web

3.添加依賴


引入 Spring Boot Starter 父工程:spring

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.5.RELEASE</version>
    <relativePath/>
</parent>

引入 spring-boot-starterspring-boot-starter-testmybatis-plus-boot-starterlombokdruidmysql-connector-javamybatis-plus-generatorvelocity-engine-corefreemarker等依賴:sql

<dependencies>
 <dependency> <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency> <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 <exclusions> <exclusion> <groupId>org.junit.vintage</groupId>
 <artifactId>junit-vintage-engine</artifactId>
 </exclusion> </exclusions> </dependency>
 <!--  lombok插件 -->
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <optional>true</optional>
 </dependency>
 <!-- 代碼生成器與模板引擎 -->
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-generator</artifactId>
 <version>3.4.0</version>
 </dependency>
 <!-- 模板引擎 依賴 Velocity(默認) -->
 <dependency>
 <groupId>org.apache.velocity</groupId>
 <artifactId>velocity-engine-core</artifactId>
 <version>2.2</version>
 </dependency>
 <!-- Freemarker -->
 <dependency>
 <groupId>org.freemarker</groupId>
 <artifactId>freemarker</artifactId>
 <version>2.3.30</version>
 </dependency>
 <!-- MyBatis-Plus 插件 -->
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.4.0</version>
 </dependency>
 <!-- Mysql 鏈接插件 -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
 </dependency>
 <!-- 引入阿里數據庫鏈接池 -->
 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>druid</artifactId>
 <version>1.2.1</version>
 </dependency></dependencies>

4.配置


把resource包下的application.properties複製一份再粘貼名字改爲application.yml,在 application.yml 配置文件中添加 mysql 數據庫的相關配置:數據庫

# 端口配置
server:
  port: 8080
 servlet:
    context-path: /
# 數據源配置
spring:
  application:
    name: springboot-mybatis-plus
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    type: com.alibaba.druid.pool.DruidDataSource
 username: root
    password: root
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
# Mybatis-Plus配置
mybatis-plus:
  # 若是是放在src/main/java目錄下 classpath:/com/yourpackage/*/mapper/*Mapper.xml # 若是是放在resource目錄 classpath:/mapper/*Mapper.xml mapper-locations: classpath*:com/frame/**/**.xml,classpath*:mapper/*.xml
  #實體掃描,多個package用逗號或者分號分隔
 typeAliasesPackage: com.frame.**.entity,com.frame.**.dto
  global-config:
    #刷新mapper 調試神器
 db-config:
      #主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局惟一ID (數字類型惟一ID)", 3:"全局惟一ID UUID";
 id-type: UUID
 #字段策略 IGNORED:"忽略判斷"  NOT_NULL:"非 NULL 判斷")  NOT_EMPTY:"非空判斷"
 field-strategy: NOT_EMPTY
      #數據庫類型
 db-type: MYSQL
      #邏輯刪除配置
 logic-delete-value: 1 # 邏輯已刪除值(默認爲 1) logic-not-delete-value: 0 # 邏輯未刪除值(默認爲 0) #駝峯下劃線轉換
 column-underline: false
      #數據庫大寫下劃線轉換
 #      capital-mode: true
 refresh: true
  configuration:
    # 是否開啓自動駝峯命名規則映射:從數據庫列名到Java屬性駝峯命名的相似映射
 map-underscore-to-camel-case: true
 # 若是查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段
 call-setters-on-nulls: true
 cache-enabled: false
 #配置JdbcTypeForNull, oracle數據庫必須配置
 jdbc-type-for-null: 'null'
 # 這個配置會將執行的sql打印出來,在開發或測試的時候能夠用
 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 database-id: mysql

5.代碼生成器


AutoGenerator 是 MyBatis-Plus 的代碼生成器,經過 AutoGenerator 能夠快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼apache

/**
 * <p>
 * 讀取控制檯內容
 * </p>
 */
 public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
 StringBuilder help = new StringBuilder();
 help.append("請輸入" + tip + ":");
 System.out.println(help.toString());
 if (scanner.hasNext()) {
            String ipt = scanner.next();
 if (StringUtils.isNotBlank(ipt)) {
                return ipt;
 }
        }
        throw new MybatisPlusException("請輸入正確的" + tip + "!");
 }
    public static void main(String[] args) {
        // 代碼生成器
 AutoGenerator mpg = new AutoGenerator();
 // 全局配置
 GlobalConfig gc = new GlobalConfig();
 String projectPath = System.getProperty("user.dir");
 gc.setOutputDir(projectPath + "/src/main/java");
 gc.setAuthor("wulongbo");
 gc.setOpen(false);
 // gc.setSwagger2(true); 實體屬性 Swagger2 註解
 mpg.setGlobalConfig(gc);
 // 數據源配置
 DataSourceConfig dsc = new DataSourceConfig();
 dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai");
 // dsc.setSchemaName("public");
 dsc.setDriverName("com.mysql.jdbc.Driver");
 dsc.setUsername("root");
 dsc.setPassword("root");
 mpg.setDataSource(dsc);
 // 包配置
 PackageConfig pc = new PackageConfig();
//        pc.setModuleName(scanner("模塊名"));
 pc.setParent("com.mybatis.plus");
 mpg.setPackageInfo(pc);
 // 自定義配置
 InjectionConfig cfg = new InjectionConfig() {
            @Override
 public void initMap() {
                // to do nothing
 }
        };
 // 若是模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl";
 // 若是模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm";
 // 自定義輸出配置
 List<FileOutConfig> focList = new ArrayList<>();
 // 自定義配置會被優先輸出
 focList.add(new FileOutConfig(templatePath) {
            @Override
 public String outputFile(TableInfo tableInfo) {
                // 自定義輸出文件名 , 若是你 Entity 設置了先後綴、此處注意 xml 的名稱會跟着發生變化!!
 return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
 }
        });
 /*
 cfg.setFileCreate(new IFileCreate() { @Override public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { // 判斷自定義文件夾是否須要建立
 checkDir("調用默認方法建立的目錄,自定義目錄用");
 if (fileType == FileType.MAPPER) { // 已經生成 mapper 文件判斷存在,不想從新生成返回 false return !new File(filePath).exists(); } // 容許生成模板文件
 return true; } }); */ cfg.setFileOutConfigList(focList);
 mpg.setCfg(cfg);
 // 配置模板
 TemplateConfig templateConfig = new TemplateConfig();
 // 配置自定義輸出模板
 //指定自定義模板路徑,注意不要帶上.ftl/.vm, 會根據使用的模板引擎自動識別
 // templateConfig.setEntity("templates/entity2.java");
 // templateConfig.setService(); // templateConfig.setController();
 templateConfig.setXml(null);
 mpg.setTemplate(templateConfig);
 // 策略配置
 StrategyConfig strategy = new StrategyConfig();
 strategy.setNaming(NamingStrategy.underline_to_camel);
 strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setSuperEntityClass("你本身的父類實體,沒有就不用設置!");
 strategy.setEntityLombokModel(true);
 strategy.setRestControllerStyle(true);
 // 公共父類
//        strategy.setSuperControllerClass("你本身的父類控制器,沒有就不用設置!");
 // 寫於父類中的公共字段
//        strategy.setSuperEntityColumns("id"); //刪掉,不刪的話實體類沒有id
 strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
 strategy.setControllerMappingHyphenStyle(true);
//        strategy.setTablePrefix("sys" + "_");//去掉表前綴
 strategy.setTablePrefix("tbl" + "_");//去掉表前綴
 mpg.setStrategy(strategy);
 mpg.setTemplateEngine(new FreemarkerTemplateEngine());
 mpg.execute();
 }

執行 main 方法控制檯輸入模塊表名【user】回車自動生成對應項目目錄,目錄結構以下:
imageapi

6.啓動Springboot項目


必需要在springboot啓動類上加上掃包註解@MapperScan(basePackages = "com.xxx.xxx"),或者在Dao層上加上@Mapper 或 @Repository註解來注入Mapper文件,在這裏選用主程序掃包的方式注入
image
install一下,而後啓動項目,若是啓動失敗,則須要跳過測試,在pom文件中添加配置跳過測試

<build>
 <plugins> <plugin> <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 <configuration> <fork>true</fork>
 </configuration> </plugin> <!--添加配置跳過測試-->
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.22.2</version>
 <configuration> <skipTests>true</skipTests>
 </configuration> </plugin> </plugins></build>

啓動成功後如圖,至此Springboot集成Mybatis-Plus就OK了
【參考文檔】Mybatis-Plus官網連接:Mybatis-Plus官網因爲公司性質,全部代碼加密了,外網github上傳不了因此這裏就不提供github連接了。

相關文章
相關標籤/搜索