1. 引入插件
<build><finalName>demo</finalName><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><!-- oracle的jdbc驱动包,如果使用其他数据库,则不需要-->
<!-- <dependency>-->
<!-- <groupId>com.oracle.database.jdbc</groupId>-->
<!-- <artifactId>ojdbc8</artifactId>-->
<!-- <version>19.3.0.0</version>-->
<!-- </dependency>--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!-- 集成MBG插件 --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.4.2</version></dependency><!-- 集成MBG的lombok插件 --><dependency><groupId>com.softwareloop</groupId><artifactId>mybatis-generator-lombok-plugin</artifactId><version>1.0</version></dependency></dependencies><configuration><!-- mybatis用于生成代码的配置文件 --><configurationFile>src/main/resources/generatorConfig.xml</configurationFile><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin></plugins></build>
2. 编写MBG文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--第二行引入爆红,说明没有导入mybatis-generator-core的依赖,导入后刷新maven-->
<generatorConfiguration><!--导入属性配置--><!-- context 是逆向工程的主要配置信息 --><!-- id:name --><!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 --><context id="default" targetRuntime="MyBatis3"><!-- 生成的 Java 文件的编码 --><property name="javaFileEncoding" value="UTF-8"/><!-- plugin元素 得在 property下面 commentGenerator上面--><plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"><property name="searchString" value="Example$" /><property name="replaceString" value="Criteria" /></plugin><!--自动实现序列化接口 --><plugin type="org.mybatis.generator.plugins.SerializablePlugin" /><!--生成toString方法 -->
<!-- <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />--><!--生成equals和hashCode方法 -->
<!-- <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />--><plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /><!--整合lombok --><plugin type="com.softwareloop.mybatis.generator.plugins.LombokPlugin"><property name="annotations" value="Data, NoArgsConstructor, AllArgsConstructor"/></plugin><!-- optional,旨在创建class时,对注释进行控制 --><commentGenerator><!-- 添加db表中字段的注释 --><property name="addRemarkComments" value="true"/><!-- 是否生成注释代时间戳 --><property name="suppressDate" value="false"/><!-- 是否取消自动生成的注释 --><property name="suppressAllComments" value="false"/></commentGenerator><!--jdbc的数据库连接 URL后加的参数可以减少报错,&连接需要做转义,SSL版本高需要声明--><jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL= "jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false"userId= "root"password= "root" ><!-- 启用INFORMATION_SCHEMA获取表结构 --><property name="useInformationSchema" value="true"/><!-- 可选:指定数据库schema(如MySQL的库名、PostgreSQL的schema名) --><property name="schema" value="demo"/></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><!-- 是否使用 BigDecimal 映射 DECIMAL 和 NUMERIC 类型true: 映射为 java.math.BigDecimalfalse: 映射为 Integer(如果精度为0)或 Double(默认) --><property name="forceBigDecimals" value="false"/><!-- 是否使用 JSR-310 日期类型(Java 8+ 的 LocalDate、LocalDateTime 等)true: 数据库 DATE → LocalDate,DATETIME → LocalDateTimefalse: 映射为 java.util.Date(默认) --><property name="useJSR310Types" value="true"/></javaTypeResolver><!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类targetPackage 指定生成的model生成所在的包名targetProject 指定在该项目下所在的路径--><!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--><javaModelGenerator targetPackage="module" targetProject="./src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加 构造函数,如果为true则不会生成ResultMap --><property name="constructorBased" value="false"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --><!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">--><sqlMapGenerator targetPackage="mybatis/mappers" targetProject="./src/main/resources"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口--><!-- targetPackage:mapper接口dao生成的位置 --><!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">--><javaClientGenerator type="XMLMAPPER" targetPackage="dao" targetProject="./src/main/java"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!--生成的表--><!--domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;--><!--enableInsert(默认true):指定是否生成insert语句;--><!--enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);--><!--enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;--><!--enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);--><!--enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);--><!--enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;--><!--enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);--><!--enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);--><table tableName="user" domainObjectName="User"enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="false"></table></context>
</generatorConfiguration>
3. 执行
mybatis-generator:generate -e
或idea右侧双击Maven下的Plugins的mybatis-generator:generate
Reference:
IDEA自动生成Mapper和实体文件