springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

时间:2023-03-08 22:08:51
springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

由于表对象在开发过程中会增删字段,有时候需要重新生成实体和对应的mapper,这时候可以通过mybatis的插件的生成。

优点是快速简洁,缺点同样很明显:覆盖。因此,通常是在第一次搭建框架的时候使用,因为开发过程中实体的字段会被修改,如添加注解validator、format等。所以架构师学会用包装对象?包装对象怎么实现在原始表的属性的控制呢,比如日期格式化,比如校验。

1.首先,在pom中依赖插件:

  <!-- Mybatis generator代码生成插件 配置 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${plugin.mybatis.generator}</version>
<configuration>
<configurationFile>${mybatis.generator.generatorConfig.xml}</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
  <properties>
<!-- plugin setting -->
<mybatis.generator.generatorConfig.xml>${basedir}/src/test/resources/generatorConfig.xml</mybatis.generator.generatorConfig.xml>
<mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/resources/generatorConfig.properties</mybatis.generator.generatorConfig.properties>
</properties>

2.在maven项目中的test模块里进行配置:

在test/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"> <!-- 配置Run As Maven build : Goals 参数 : mybatis-generator:generate -Dmybatis.generator.overwrite=true -->
<!-- 配置 tableName,使用 Run As Maven build 生成 dao model 层 -->
<generatorConfiguration>
<!-- 配置文件路径 -->
<properties url="${mybatis.generator.generatorConfig.properties}"/> <!--数据库驱动包路径 -->
<classPathEntry location="${drive.class.path}"/> <context id="DB2Tables" targetRuntime="MyBatis3">
<!--关闭注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator> <!--数据库连接信息 -->
<jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection> <!--生成的model 包路径 -->
<javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator> <!--生成xml mapper文件 路径 -->
<sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
</sqlMapGenerator> <!-- 生成的Dao接口 的包路径 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
</javaClientGenerator> <!--对应数据库表名 -->
<table tableName="user"> </table>
</context>
</generatorConfiguration>

修改最后需要生成的表名,我将部分关键数据抽取出来放在generatorConfig.properties,这个文件放在同一目录下。

 # 数据库驱动jar 路径
drive.class.path=D:\\MyApp\\repository\\mysql\\mysql-connector-java\\5.1.29\\mysql-connector-java-5.1.29.jar # 数据库连接参数
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=密码 # 包路径配置
model.package=com.demo.modules.front.entity
dao.package=com.demo.modules.front.mapper
xml.mapper.package=com.demo.modules.front.mapper target.project=src/main/java

3.生成

运行mybatis-generator:generate即可在需要的bao下生成对应的文件。

4.注意

在第二次或之后运行生成文件的时候,java类会被覆盖,也就是说如果对实体对象进行了手动修改的话需要慎重;还有:

xml文件不会被覆盖,只是追加,这样会导致xml文件中重复模块,因此需要删除xml文件后生成。

由于idea默认只在resource下加载xml,如果默认配置mapper.java和xml同一个目录,可能不会识别,所以需要将xml配置到resource下,或者在maven的pom中添加resource:

 <!--配置Maven 对resource文件 过滤 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>