自动生成代码:
有时候在写项目用到spring-mybatis整合的时候以及别的mybatis项目的时候,我们为bean中实现类中的属性繁多,以及接口中方法繁多,还有各个接口中的方法所对应的sql语句以及实现类属性和数据库列名,等做完这么多准备工作后非常的消耗时间,为此我们将会介绍两种自动生成代码的工具,一种为添加maven依赖,相当于插件自动生成,另一种则是命令行生成,为外在配置的文件生成后,随即将其赋值到IDEA中。
maven依赖方式
1.首先在pom中添加依赖:
//此处为声明我们配置了自动生成代码的插件
<pluginManagement>//此处不再书写关标签
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>//此处不再书写关标签
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 指定自定义配置文件(代码生成工具)路径 -->
<!--
<configurationFile></configurationFile>
-->
<includeCompileDependencies>true</includeCompileDependencies>
<overwrite>true</overwrite>
</configuration>
</plugin>
//此代码及时调用此插件
<build>//此处没有书写关标签
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
</plugin>
</plugins>
当我们在pom文件中配置结束后,还需要一个xml文件来配置我们所需要的代码。
2.在resources文件中建立generatorConfig.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>
<!--
targetRuntime常用值:
MyBatis3Simple(只生成基本的CRUD和少量的动态SQL)
MyBatis3(生成完整的CRUD,包含CriteriaAPI方法Example后缀的方法)
-->
<context id="localhost_mysql" targetRuntime="MyBatis3Simple">
<!-- 不生成注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/yanfa5?characterEncoding=utf8&serverTimezone=UTC"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成实体类 -->
<javaModelGenerator targetPackage="com.xxx.spring.bean" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成XML Mapper -->
<sqlMapGenerator targetPackage="src/main/resources/mapper" targetProject=".">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成Mapper接口 -->
<!-- 生成的Mapper类型:ANNOTATEDMAPPER(注解)、MIXEDMAPPER(混合)、XMLMAPPER(XML) -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.spring.dao" targetProject="src/main/java">
<!-- 是否将数据库中的schema作为包名的一部分,默认就是false -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
//domainObjectName为实现类的类名
<!-- <table schema="yanfa5" tableName="message" domainObjectName="Message"-->
<!-- enableCountByExample="false">-->
<!-- <!– 是否用数据库中的字段名作为POJO属性名(不自动转小驼峰),默认值是false –>-->
<!-- <!–-->
<!-- <property name="useActualColumnNames" value="true"/>-->
<!-- –>-->
<!-- <!– 生成代码时支持获取插入数据后自增的ID, 需要通过sqlStatement配置数据库类型。 –>-->
<!-- <generatedKey column="id" sqlStatement="mysql" identity="true" />-->
<!-- 此标签用于在生成代码时忽略数据库中的某个字段 -->
<!--
<ignoreColumn column="FRED" />
-->
<!-- 通过此标签重写mybatis从数据库读到的元信息,自定义列相关配置,包括(名称、类型) -->
<!--
<columnOverride column="aa" property="sname" />
-->
<!-- </table>-->
<table schema="yanfa5" tableName="user" domainObjectName="User">
</table>
<!-- <table schema="yanfa5" tableName="province" domainObjectName="Province">-->
<!-- </table>-->
</context>
</generatorConfiguration>
此时我们需要注意有些地方需要我们根据自己的项目路径已经数据库名字及列表名来自行修改。
3.在maven中点击生成代码
在IDEA的右边点开maven中pulgins,随后点击mybatis-generator此插件后,点击mybatis-generator:generate后,当命令行现实建立成功后,即完成了自动生成代码之插件方法。
命令行生成方式
命令行生成方式和maven依赖还是有区别的,命令行生成可以在一个文件夹中,新建一个类似generatorConfig.xml的文件,以及一个generatorConfig.xml.jar包,并配置一个启动生成代码的文件即可。
1.配置生成文件
<?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>
<!-- 引入第三方依赖包 -->//是我们mysql文件的根目录,以及后面加上jar包的名字
<classPathEntry location="C:\Users\lx\.m2\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar" />
<!--
targetRuntime常用值:
MyBatis3Simple(只生成基本的CRUD和少量的动态SQL)
MyBatis3(生成完整的CRUD,包含CriteriaAPI方法Example后缀的方法)
-->
<context id="localhost_mysql" targetRuntime="MyBatis3">
<!-- 不生成注解 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/yanfa5?characterEncoding=utf8&serverTimezone=UTC"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成实体类 -->
<javaModelGenerator targetPackage="com.xxx.spring.bean" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成XML Mapper -->
<sqlMapGenerator targetPackage="src/main/resources/mapper" targetProject=".">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成Mapper接口 -->
<!-- 生成的Mapper类型:ANNOTATEDMAPPER(注解)、MIXEDMAPPER(混合)、XMLMAPPER(XML) -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.spring.mapper" targetProject="src/main/java">
<!-- 是否将数据库中的schema作为包名的一部分,默认就是false -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<table schema="yanfa5" tableName="city" domainObjectName="City"
enableCountByExample="false">
<!-- 是否用数据库中的字段名作为POJO属性名(不自动转小驼峰),默认值是false -->
<!--
<property name="useActualColumnNames" value="true"/>
-->
<!-- 生成代码时支持获取插入数据后自增的ID, 需要通过sqlStatement配置数据库类型。 -->
<generatedKey column="id" sqlStatement="mysql" identity="true" />
<!-- 此标签用于在生成代码时忽略数据库中的某个字段 -->
<!--
<ignoreColumn column="FRED" />
-->
<!-- 通过此标签重写mybatis从数据库读到的元信息,自定义列相关配置,包括(名称、类型) -->
<!--
<columnOverride column="aa" property="sname" />
-->
</table>
</context>
</generatorConfiguration>
因为是外部文件,我们可以先建立一个txt文件,把配置文件写进去后,将后缀改为XML即可,此处和之前是一样的需要更改数据库名字以及列表名字,但不需要更改路径,因为可以自动生成文件路径,类似:\src\main\java\com\xxx\spring\bean
2.添加自动生成代码的mybatis的jar包
3.配置启动文件:
和上一个文件一样,我们先建一个txt文件随后将后缀改为bat即可,为windows系统启动使用,MAC的话后缀为sh,随后我们用编辑软件Notepad++将下面代码写进去,便可以点开此文件了,而且会弹出命令行,显示代码中的“生成成功”后,便可以在此文件中查到我们刚刚生成的各种类,接口,以及xml文件。
mkdir src\main\java
java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml -overwrite
echo "生成成功"
pause
到这里我们已经把两种方式介绍完毕,如有别的方法咱们再研究!