眼下ssm项目基于springboot开发已是大势所趋,使用ssm框架,当然大多数人都会想到用mybatis-generator工具生成dao层接口和xml配置文件。目前我就是自己公司项目转springboot,我把开发工具也从eclipse换成了idea,但是原来eclipse里装了插件能正产生成mybatis代码的配置,到idea就不管用了,报错如下:
[ERROR] No plugin found for prefix 'mybatis-generator' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (C:\Users\Administrator\.m2\repository), central (https://repo.maven.apache.org/maven2)] -> [Help 1]
这个错误原因是:
- 没配置mybatis-generator插件
- 插件配置的不正确。
我按下面步骤配置后,代码就能自动生成了 ,分享出来,在要生成dao代码的模块儿pom文件里添加如下配置:
1 配置mybatis-generator插件
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
<!--src/main/resources/mybatis/mybatis-generator.xml-->
D:\test\rov.dao\src\main\resources\mybatis\mybatis-generator.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals><goal>generate</goal></goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.6</version>
</dependency>
</dependencies>
</plugin>
</plugins>
代码中,有两个地方要注意:
- 在插件配置中要加入数据库驱动jar依赖,我的项目用的postgre所以加了postgre的驱动。
- 指定mybatis-generator.xml配置文件路径要正确。用相对路径src\main\resources\mybatis\mybatis-generator.xml也可以吧。自己去试试。用绝对路径绝对可以。
2 配置mybatis-generator.xml
这个配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="DBTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="org.postgresql.Driver" connectionURL="jdbc:postgresql://ip:port/dbname" userId="xx" password="xx">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.test.po" targetProject="src/main/java">
<property name="constructorBased" value="false"/>
<property name="rootClass" value="com.test.po.BaseEntity"/>
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mybatis.mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.test.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 下面的schema属性值,连接postgre时要放空 ;但oracle需要库名作为schema属性值-->
<table schema="" tableName="masterequipment" domainObjectName="MasterequipmentEntity" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true"
enableSelectByExample="true" selectByExampleQueryId="true">
<!-- 参考 javaModelGenerator 的 constructorBased属性-->
<property name="constructorBased" value="false"/>
<!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; -->
<property name="ignoreQualifiersAtRuntime" value="false"/>
<!-- for MyBatis3 / MyBatis3Simple 是否创建一个不可变的类,如果为true, 那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类-->
<property name="immutable" value="false"/>
<!-- 指定是否只生成domain类,如果设置为true,只生成domain类,如果还配置了sqlMapGenerator,那么在mapper XML文件中,只生成resultMap元素 -->
<property name="modelOnly" value="false"/>
<!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
<property name="useActualColumnNames" value="false"/>
</table>
</context>
</generatorConfiguration>
配置中有几个地方需要注意就是:1 targetProject属性要配置项目模块儿下的文件夹的路径 2 targetPackage是模块儿下包路径 这两个属性决定了生成的文件存放在哪里。3 domainObjectName是生成的文件的名字。其余的配置自己看看也就明白了。具体的还要需要的同志自己去跑一遍儿配置看看。
插件配置好后,在模块儿的plugins下会多出来一个mybatis-generator,如下图:
运行自动生成后,生成的文件如下图:
至此,over。