Mybatis 自动生成 Dao 、实体类、mapper

1、目录结构及数据库表

image-20201019004633555.png image-20201019004433921.png

2、在 pom.xml 文件添加依赖

  1. <!-- 添加在 <plugins> 标签中-->
  2. <!--添加mybatis generator maven插件-->
  3. <plugin>
  4. <groupId>org.mybatis.generator</groupId>
  5. <artifactId>mybatis-generator-maven-plugin</artifactId>
  6. <configuration>
  7. <!--generatorConfig.xml位置-->
  8. <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
  9. <verbose>true</verbose>
  10. <overwrite>true</overwrite>
  11. </configuration>
  12. <executions>
  13. <execution>
  14. <id>Generate MyBatis Artifacts</id>
  15. <goals>
  16. <goal>generate</goal>
  17. </goals>
  18. <phase>generate-sources</phase>
  19. </execution>
  20. </executions>
  21. <!--此处必须添加mysql驱动包-->
  22. <dependencies>
  23. <dependency>
  24. <groupId>mysql</groupId>
  25. <artifactId>mysql-connector-java</artifactId>
  26. <scope>runtime</scope>
  27. <version>8.0.21</version>
  28. </dependency>
  29. </dependencies>
  30. </plugin>

3、在 resource 目录下创建 mybatis-generator 文件夹,并在该目录下创建generatorConfig.xml 和 mybatisGeneratorinit.properties 文件

  • generatorConfig.xml
  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. <!-- 配置生成器 -->
  6. <generatorConfiguration>
  7. <!--执行generator插件生成文件的命令: call mvn mybatis-generator:generate -e -->
  8. <!-- 引入配置文件 -->
  9. <properties resource="mybatis-generator/mybatisGeneratorinit.properties"/>
  10. <!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 -->
  11. <!--<classPathEntry location="E:\mybatis\mysql-connector-java-5.1.24-bin.jar" /> -->
  12. <!-- 一个数据库一个context -->
  13. <!--defaultModelType="flat" 大数据字段,不分表 -->
  14. <context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
  15. <!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;
  16. 一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖 -->
  17. <property name="autoDelimitKeywords" value="true" />
  18. <!-- 生成的Java文件的编码 -->
  19. <property name="javaFileEncoding" value="utf-8" />
  20. <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
  21. <property name="beginningDelimiter" value="`" />
  22. <property name="endingDelimiter" value="`" />
  23. <!-- 格式化java代码 -->
  24. <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
  25. <!-- 格式化XML代码 -->
  26. <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
  27. <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
  28. <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
  29. <!-- 注释 -->
  30. <commentGenerator >
  31. <property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
  32. <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
  33. </commentGenerator>
  34. <!-- jdbc连接 -->
  35. <jdbcConnection driverClass="${jdbc_driver}" connectionURL="${jdbc_url}" userId="${jdbc_user}" password="${jdbc_password}" />
  36. <!-- 类型转换 -->
  37. <javaTypeResolver>
  38. <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
  39. <property name="forceBigDecimals" value="false"/>
  40. </javaTypeResolver>
  41. <!-- 生成实体类地址 -->
  42. <javaModelGenerator targetPackage="com.example.mybatisauto.models" targetProject="${models}" >
  43. <property name="enableSubPackages" value="false"/>
  44. <property name="trimStrings" value="true"/>
  45. </javaModelGenerator>
  46. <!-- 生成mapxml文件 -->
  47. <sqlMapGenerator targetPackage="mapper" targetProject="${resources}" >
  48. <property name="enableSubPackages" value="false" />
  49. </sqlMapGenerator>
  50. <!-- 生成mapxml对应client,也就是接口dao -->
  51. <javaClientGenerator targetPackage="com.example.mybatisauto.dao" targetProject="${dao}" type="XMLMAPPER" >
  52. <property name="enableSubPackages" value="true" />
  53. </javaClientGenerator>
  54. <!-- table可以有多个,每个数据库中的表都可以写一个table,tableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -->
  55. <!-- tableName="表名" catalog="数据库名" enable....="是否生成指定的方法等"-->
  56. <table catalog="map3d" tableName="user"
  57. enableCountByExample="true"
  58. enableUpdateByExample="true"
  59. enableDeleteByExample="true"
  60. enableSelectByExample="true"
  61. selectByExampleQueryId="true">
  62. <property name="useActualColumnNames" value="false" />
  63. <!-- 数据库表主键 -->
  64. <generatedKey column="id" sqlStatement="Mysql" identity="true" />
  65. </table>
  66. </context>
  67. </generatorConfiguration>
  • mybatisGeneratorinit.properties
  1. jdbc_driver=com.mysql.cj.jdbc.Driver
  2. jdbc_url=jdbc:mysql://localhost:3306/map3d?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
  3. jdbc_user=root
  4. jdbc_password=123456
  5. models=D:/code/idea_code/mybatisauto/src/main/java
  6. resources=D:/code/idea_code/mybatisauto/src/main/resources
  7. dao=D:/code/idea_code/mybatisauto/src/main/java

4、代码自动生成

image-20201019005008280.png