需求: springboot項目,通過mybatis自動根據數據庫生成對應的實體/mapper
開發工具: idea
方法:
一、創建一個springboot對象
二、配置pom
我的pom如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.4.3</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.example</groupId> 12 <artifactId>mybatisgen</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>mybatisgen</name> 15 <description>Demo project for Spring Boot</description> 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 <dependencies> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-data-jdbc</artifactId> 23 </dependency> 24 <dependency> 25 <groupId>org.springframework.boot</groupId> 26 <artifactId>spring-boot-starter-web</artifactId> 27 </dependency> 28 <dependency> 29 <groupId>org.mybatis.spring.boot</groupId> 30 <artifactId>mybatis-spring-boot-starter</artifactId> 31 <version>2.1.4</version> 32 </dependency> 33 34 <dependency> 35 <groupId>mysql</groupId> 36 <artifactId>mysql-connector-java</artifactId> 37 <scope>runtime</scope> 38 </dependency> 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-starter-test</artifactId> 42 <scope>test</scope> 43 </dependency> 44 45 <dependency> 46 <groupId>org.mybatis.generator</groupId> 47 <artifactId>mybatis-generator-core</artifactId> 48 <version>1.3.6</version> 49 </dependency> 50 51 <dependency> 52 <groupId>com.alibaba</groupId> 53 <artifactId>druid-spring-boot-starter</artifactId> 54 <version>1.1.9</version> 55 </dependency> 56 </dependencies> 57 58 <build> 59 <plugins> 60 <plugin> 61 <groupId>org.springframework.boot</groupId> 62 <artifactId>spring-boot-maven-plugin</artifactId> 63 </plugin> 64 <plugin> 65 <groupId>org.mybatis.generator</groupId> 66 <artifactId>mybatis-generator-maven-plugin</artifactId> 67 <version>1.3.2</version> 68 <configuration> 69 <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> 70 <overwrite>true</overwrite> 71 <verbose>true</verbose> 72 </configuration> 73 </plugin> 74 <plugin> 75 <groupId>org.apache.maven.plugins</groupId> 76 <artifactId>maven-resources-plugin</artifactId> 77 <version>2.4.3</version> 78 <configuration> 79 </configuration> 80 </plugin> 81 </plugins> 82 <resources> 83 <resource> 84 <directory>${basedir}/src/main/resources</directory> 85 <excludes> 86 <exclude>lib/*.jar</exclude> 87 </excludes> 88 </resource> 89 </resources> 90 </build> 91 92 </project>
三、下載依賴的資源
四、配置application.properties文件
1 #=================mybatis相關配置===================# 2 mybatis.jdbc.jar=C:/Users/Administrator/AppData/Roaming/JetBrains/IntelliJIdea2020.1/jdbc-drivers/MySQL ConnectorJ/8.0.21/mysql-connector-java-8.0.21.jar 3 mybatis.javaModelGenerator.targetPackage=com.example.mybatisgen.entity 4 mybatis.generator.targetProject=src/main/java 5 mybatis.sqlMapGenerator.targetPackage=com.example.mybatisgen.mapper 6 mybatis.javaClientGenerator.targetPackage=com.example.mybatisgen.mapper 7 #mybatis掃描接口對應的xml文件 8 mybatis.type-aliases-package=com.example.mybatisgen.entity 9 mybatis.mapper-locations=classpath*:mapper/*.xml 10 11 #=================mysql相關配置===================# 12 spring.datasource.name=virtual_control_db 13 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 14 #druid相關配置 15 # 監控統計攔截的filters 16 spring.datasource.druid.filters=stat 17 spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver 18 spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 19 spring.datasource.druid.username=root 20 spring.datasource.druid.password=root
根據自己的項目情況和數據庫情況進行更改
五、配置自動生成的xml
在resources下創建文件generatorConfig.xml
文件內容直接粘貼我的就行,因為配置基本都是變量,從application.properties中讀取的,基本上不需要更改。不過需要根據自己數據庫情況改動下<!--生成全部的表-->注解處的配置。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 <!-- 配置 tableName,使用 Run As Maven build 生成 dao 層 --> 6 <generatorConfiguration> 7 <!-- 配置文件路徑 --> 8 <properties resource="application.properties"/> 9 <!--數據庫驅動包路徑 --> 10 <classPathEntry location="${mybatis.jdbc.jar}"/> 11 12 <!-- flat表示為每一張表只生成一個實體類。這個實體類包含表中的所有字段--> 13 <context id="virtual-control-sql" defaultModelType="flat"> 14 <!-- 生成的Java文件的編碼 --> 15 <property name="javaFileEncoding" value="UTF-8"/> 16 <!-- 格式化java代碼 --> 17 <property name="javaFormatter" 18 value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/> 19 <!-- 格式化XML代碼 --> 20 <property name="xmlFormatter" 21 value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/> 22 <!-- 抑制警告 --> 23 <property name="suppressTypeWarnings" value="true"/> 24 <!-- generate entity時,生成serialVersionUID --> 25 <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> 26 27 <!--關閉注釋 --> 28 <commentGenerator> 29 <property name="suppressAllComments" value="true"/><!-- 是否取消注釋 --> 30 <property name="suppressDate" value="true"/> <!-- 是否生成注釋代時間戳 --> 31 </commentGenerator> 32 33 <!--數據庫連接信息 --> 34 <jdbcConnection driverClass="${spring.datasource.druid.driver-class-name}" 35 connectionURL="${spring.datasource.druid.url}" 36 userId="${spring.datasource.druid.username}" 37 password="${spring.datasource.druid.password}"> 38 </jdbcConnection> 39 40 41 <!--生成的model 包路徑 --> 42 <javaModelGenerator targetPackage="${mybatis.javaModelGenerator.targetPackage}" 43 targetProject="${mybatis.generator.targetProject}"> 44 <property name="trimStrings" value="true"/> 45 </javaModelGenerator> 46 47 <!--生成xml mapper文件 路徑 --> 48 <sqlMapGenerator targetPackage="${mybatis.sqlMapGenerator.targetPackage}" 49 targetProject="${mybatis.generator.targetProject}"> 50 <property name="enableSubPackages" value="true"/> 51 </sqlMapGenerator> 52 53 <!-- 生成的Dao接口 的包路徑 --> 54 <javaClientGenerator type="XMLMAPPER" 55 targetPackage="${mybatis.javaClientGenerator.targetPackage}" 56 targetProject="${mybatis.generator.targetProject}"> 57 </javaClientGenerator> 58 59 <!--生成全部的表--> 60 <table tableName="user"> 61 <generatedKey column="id" sqlStatement="Mysql"/> 62 </table> 63 </context> 64 </generatorConfiguration>
六、執行插件目標,准備生成代碼
執行成功控制台會顯示如下信息:
看看項目中是否已經生成新的代碼:
試試看吧~