本次创建项目分成下面几个步骤介绍
(1)创建springboot项目;
(2)整合mybatis,搭建数据访问层框架
(3)整合shiro搭建权限验证框架;
(4)自动生成代码;
(5)整合logger搭建日志框架
上一篇我们介绍了如何整合shiro,搭建权限验证框架,这一篇我们介绍如何根据数据库表结构自动创建数据访问层、业务层和控制层代码。
准备工作:我们先建一张表作为用例
DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log` (
`id` int(11) NOT NULL,
`invoke_method` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '调用的方法',
`invoke_return_resp` text COLLATE utf8_unicode_ci COMMENT '返回的数据',
`invoke_sql` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '执行的sql',
`sql_start_time` datetime DEFAULT NULL COMMENT 'sql执行起始时间',
`sql_end_time` datetime DEFAULT NULL COMMENT 'sql执行结束时间',
`sql_time` datetime DEFAULT NULL COMMENT 'sql执行时间',
`invoke_param` text COLLATE utf8_unicode_ci COMMENT '方法传入的参数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
SET FOREIGN_KEY_CHECKS = 1;
第一步:pom文件引入相关jar包,配置maven插件;
<!-- 我们需要在pom.xml里面配置一些属性,这些属性我们将在generatorConfig.xml里面用到-->
<properties>
<java.version>1.8</java.version>
<!-- 模块包名 -->
<modulePackage>com.itwopqq.booting.system</modulePackage>
<!-- 生成代码目录 -->
<targetProject>src/main/java</targetProject>
<targetMapperProject>src/main/resources</targetMapperProject>
<targetMapperPackage>mybatis.system.mapping</targetMapperPackage>
<targetServicePackage>com.itwopqq.booting.system.service</targetServicePackage>
<targetServiceImplPackage>com.itwopqq.booting.system.serviceimpl</targetServiceImplPackage>
<targetControllerPackage>com.itwopqq.booting.system.controller</targetControllerPackage>
<hsqldb.version>2.2.8</hsqldb.version>
<cobertura.version>1.9.4.1</cobertura.version>
<freemarker.version>2.3.23</freemarker.version>
<hsqldb.version>2.2.8</hsqldb.version>
</properties>
<!-- mybatis代码生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 代码生成插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--配置文件的路径-->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
<type>jar</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
第二步:建立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>
<!-- 数据库驱动:可选择我们本地硬盘上面的数据库驱动包,在这里我们已经在pom文件中build里面配置了 -->
<!-- <classPathEntry location="D:\workProjects\springBootMybatis\src\main\resources\lib\mysql-connector-java-5.1.9.jar"/>-->
<context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 注释生成器 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/booting?useUnicode=true&characterEncoding=utf-8&useSSL=true"
userId="root" password="123456">
</jdbcConnection>
<!-- 类型转换器或者加类型解析器 -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer, true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- java模型生成器 -->
<!-- targetProject:自动生成代码的位置 -->
<javaModelGenerator targetPackage="${modulePackage}.model"
targetProject="src/main/java">
<!-- TODO enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- map xml 生成器 -->
<!-- targetPackage 是 指targetProject下的包-->
<sqlMapGenerator targetPackage="${targetMapperPackage}"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- mapper 或者就是dao接口生成器 -->
<javaClientGenerator targetPackage="${modulePackage}.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- pojo 实体生成器 -->
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<!-- schema为数据库名 可不写 -->
<table tableName="sys_log" domainObjectName="SysLog"
enableInsert="true" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<!-- 忽略字段 可选的(0 or 1) -->
<!-- <ignoreColumn column="is_use" /> -->
<!--//无论字段是什么类型,生成的类属性都是varchar。 可选的(0 or 1) 测试无效 -->
<!-- <columnOverride column="city_code" jdbcType="VARCHAR" /> -->
</table>
</context>
</generatorConfiguration>
第三步:在generatorConfig.xml里面填写我们需要生成的数据库名和需要生成的类名,并打开maven的plugins操作栏,执行代码生成命令;
我们可以看到,我们双击generator命令之后,插件自动为我们生成了代码
SysLog.java
package com.itwopqq.booting.system.model;
import java.util.Date;
public class SysLog {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.id
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private Integer id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.invoke_method
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private String invokeMethod;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.invoke_sql
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private String invokeSql;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.sql_start_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private Date sqlStartTime;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.sql_end_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private Date sqlEndTime;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.sql_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private Date sqlTime;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.invoke_return_resp
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private String invokeReturnResp;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_log.invoke_param
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
private String invokeParam;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.id
*
* @return the value of sys_log.id
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.id
*
* @param id the value for sys_log.id
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.invoke_method
*
* @return the value of sys_log.invoke_method
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public String getInvokeMethod() {
return invokeMethod;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.invoke_method
*
* @param invokeMethod the value for sys_log.invoke_method
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setInvokeMethod(String invokeMethod) {
this.invokeMethod = invokeMethod == null ? null : invokeMethod.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.invoke_sql
*
* @return the value of sys_log.invoke_sql
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public String getInvokeSql() {
return invokeSql;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.invoke_sql
*
* @param invokeSql the value for sys_log.invoke_sql
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setInvokeSql(String invokeSql) {
this.invokeSql = invokeSql == null ? null : invokeSql.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.sql_start_time
*
* @return the value of sys_log.sql_start_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public Date getSqlStartTime() {
return sqlStartTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.sql_start_time
*
* @param sqlStartTime the value for sys_log.sql_start_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setSqlStartTime(Date sqlStartTime) {
this.sqlStartTime = sqlStartTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.sql_end_time
*
* @return the value of sys_log.sql_end_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public Date getSqlEndTime() {
return sqlEndTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.sql_end_time
*
* @param sqlEndTime the value for sys_log.sql_end_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setSqlEndTime(Date sqlEndTime) {
this.sqlEndTime = sqlEndTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.sql_time
*
* @return the value of sys_log.sql_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public Date getSqlTime() {
return sqlTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.sql_time
*
* @param sqlTime the value for sys_log.sql_time
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setSqlTime(Date sqlTime) {
this.sqlTime = sqlTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.invoke_return_resp
*
* @return the value of sys_log.invoke_return_resp
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public String getInvokeReturnResp() {
return invokeReturnResp;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.invoke_return_resp
*
* @param invokeReturnResp the value for sys_log.invoke_return_resp
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setInvokeReturnResp(String invokeReturnResp) {
this.invokeReturnResp = invokeReturnResp == null ? null : invokeReturnResp.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_log.invoke_param
*
* @return the value of sys_log.invoke_param
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public String getInvokeParam() {
return invokeParam;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_log.invoke_param
*
* @param invokeParam the value for sys_log.invoke_param
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
public void setInvokeParam(String invokeParam) {
this.invokeParam = invokeParam == null ? null : invokeParam.trim();
}
}
SysLogMapper.java
package com.itwopqq.booting.system.mapper;
import com.itwopqq.booting.system.model.SysLog;
import java.util.List;
public interface SysLogMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_log
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_log
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
int insert(SysLog record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_log
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
SysLog selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_log
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
List<SysLog> selectAll();
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_log
*
* @mbg.generated Sun Apr 19 15:41:26 CST 2020
*/
int updateByPrimaryKey(SysLog record);
}
SysLogMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwopqq.booting.system.mapper.SysLogMapper">
<resultMap id="BaseResultMap" type="com.itwopqq.booting.system.model.SysLog">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="invoke_method" jdbcType="VARCHAR" property="invokeMethod" />
<result column="invoke_sql" jdbcType="VARCHAR" property="invokeSql" />
<result column="sql_start_time" jdbcType="TIMESTAMP" property="sqlStartTime" />
<result column="sql_end_time" jdbcType="TIMESTAMP" property="sqlEndTime" />
<result column="sql_time" jdbcType="TIMESTAMP" property="sqlTime" />
<result column="invoke_return_resp" jdbcType="LONGVARCHAR" property="invokeReturnResp" />
<result column="invoke_param" jdbcType="LONGVARCHAR" property="invokeParam" />
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
delete from sys_log
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.itwopqq.booting.system.model.SysLog">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
insert into sys_log (id, invoke_method, invoke_sql,
sql_start_time, sql_end_time, sql_time,
invoke_return_resp, invoke_param)
values (#{id,jdbcType=INTEGER}, #{invokeMethod,jdbcType=VARCHAR}, #{invokeSql,jdbcType=VARCHAR},
#{sqlStartTime,jdbcType=TIMESTAMP}, #{sqlEndTime,jdbcType=TIMESTAMP}, #{sqlTime,jdbcType=TIMESTAMP},
#{invokeReturnResp,jdbcType=LONGVARCHAR}, #{invokeParam,jdbcType=LONGVARCHAR})
</insert>
<update id="updateByPrimaryKey" parameterType="com.itwopqq.booting.system.model.SysLog">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
update sys_log
set invoke_method = #{invokeMethod,jdbcType=VARCHAR},
invoke_sql = #{invokeSql,jdbcType=VARCHAR},
sql_start_time = #{sqlStartTime,jdbcType=TIMESTAMP},
sql_end_time = #{sqlEndTime,jdbcType=TIMESTAMP},
sql_time = #{sqlTime,jdbcType=TIMESTAMP},
invoke_return_resp = #{invokeReturnResp,jdbcType=LONGVARCHAR},
invoke_param = #{invokeParam,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
select id, invoke_method, invoke_sql, sql_start_time, sql_end_time, sql_time, invoke_return_resp,
invoke_param
from sys_log
where id = #{id,jdbcType=INTEGER}
</select>
<select id="selectAll" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Sun Apr 19 15:41:26 CST 2020.
-->
select id, invoke_method, invoke_sql, sql_start_time, sql_end_time, sql_time, invoke_return_resp,
invoke_param
from sys_log
</select>
</mapper>
根据上面生成的代码,我们可以看到插件还自动给我们生成了一些默认的代码,但是生成的代码的注释全都是因为的,不够友好,对此我们引进了tk.mybatis.mapper,用它来帮助我们规范我们生成代码的友好度;具体操作如下:
第一步:修改pom文件,加入tk.mybatis.mapper的依赖,并在build里面加入该依赖:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--配置文件的路径-->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
第二步:在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>
<!-- 数据库驱动:可选择我们本地硬盘上面的数据库驱动包,在这里我们已经在pom文件中build里面配置了 -->
<!-- <classPathEntry location="D:\workProjects\springBootMybatis\src\main\resources\lib\mysql-connector-java-5.1.9.jar"/>-->
<context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.itwopqq.booting.code.generator.MyMapper"/>
</plugin>
<!-- 注释生成器 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/booting?useUnicode=true&characterEncoding=utf-8&useSSL=true"
userId="root" password="123456">
</jdbcConnection>
<!-- 类型转换器或者加类型解析器 -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer, true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- java模型生成器 -->
<!-- targetProject:自动生成代码的位置 -->
<javaModelGenerator targetPackage="${modulePackage}.model"
targetProject="src/main/java">
<!-- TODO enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- map xml 生成器 -->
<!-- targetPackage 是 指targetProject下的包-->
<sqlMapGenerator targetPackage="${targetMapperPackage}"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- mapper 或者就是dao接口生成器 -->
<javaClientGenerator targetPackage="${modulePackage}.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- pojo 实体生成器 -->
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<!-- schema为数据库名 可不写 -->
<table tableName="sys_log" domainObjectName="SysLog"
enableInsert="true" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<!-- 忽略字段 可选的(0 or 1) -->
<!-- <ignoreColumn column="is_use" /> -->
<!--//无论字段是什么类型,生成的类属性都是varchar。 可选的(0 or 1) 测试无效 -->
<!-- <columnOverride column="city_code" jdbcType="VARCHAR" /> -->
</table>
</context>
</generatorConfiguration>
第三步:编写tk.mybatis.mapper.generator.MapperPlugin的mappers属性接口,该属性接口继承了tk包下的Mapper和MySqlMapper接口,让我们生成出来的代码无需编写SQL就可以通过java代码执行sql语句;代码如下:
package com.itwopqq.booting.code.generator;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* @author fanzhen
* @desx
* @date 2020-04-11
*/
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
}
第四步:删除我们前面生成的SysLog.java、SysLogMapper.java、SysLogMapper.xml,重新执行generator命令:
/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java -Dmaven.multiModuleProjectDirectory=/Users/fanzhen/Documents/ideaworkspaces/booting -Dmaven.home=/Users/fanzhen/Documents/apache-maven-3.6.1 -Dclassworlds.conf=/Users/fanzhen/Documents/apache-maven-3.6.1/bin/m2.conf "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52166:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Users/fanzhen/Documents/apache-maven-3.6.1/boot/plexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher -Didea.version2019.1 -s /Users/fanzhen/Documents/apache-maven-3.6.1/conf/settings.xml org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.itwopqq:booting:jar:0.0.1-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.mybatis.spring.boot:mybatis-spring-boot-starter:jar -> version 2.1.2 vs 1.3.3 @ line 73, column 21
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework.boot:spring-boot-starter-test:jar -> duplicate declaration of version (?) @ line 93, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------< com.itwopqq:booting >-------------------------
[INFO] Building booting 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- mybatis-generator-maven-plugin:1.3.7:generate (default-cli) @ booting ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.874 s
[INFO] Finished at: 2020-04-19T15:58:21+08:00
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
查看我们项目的目录,可以看到我们的代码已经被生成了;
一、SysLog.java
package com.itwopqq.booting.system.model;
import java.util.Date;
import javax.persistence.*;
@Table(name = "sys_log")
public class SysLog {
@Id
private Integer id;
/**
* 调用的方法
*/
@Column(name = "invoke_method")
private String invokeMethod;
/**
* 执行的sql
*/
@Column(name = "invoke_sql")
private String invokeSql;
/**
* sql执行起始时间
*/
@Column(name = "sql_start_time")
private Date sqlStartTime;
/**
* sql执行结束时间
*/
@Column(name = "sql_end_time")
private Date sqlEndTime;
/**
* sql执行时间
*/
@Column(name = "sql_time")
private Date sqlTime;
/**
* 返回的数据
*/
@Column(name = "invoke_return_resp")
private String invokeReturnResp;
/**
* 方法传入的参数
*/
@Column(name = "invoke_param")
private String invokeParam;
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取调用的方法
*
* @return invoke_method - 调用的方法
*/
public String getInvokeMethod() {
return invokeMethod;
}
/**
* 设置调用的方法
*
* @param invokeMethod 调用的方法
*/
public void setInvokeMethod(String invokeMethod) {
this.invokeMethod = invokeMethod == null ? null : invokeMethod.trim();
}
/**
* 获取执行的sql
*
* @return invoke_sql - 执行的sql
*/
public String getInvokeSql() {
return invokeSql;
}
/**
* 设置执行的sql
*
* @param invokeSql 执行的sql
*/
public void setInvokeSql(String invokeSql) {
this.invokeSql = invokeSql == null ? null : invokeSql.trim();
}
/**
* 获取sql执行起始时间
*
* @return sql_start_time - sql执行起始时间
*/
public Date getSqlStartTime() {
return sqlStartTime;
}
/**
* 设置sql执行起始时间
*
* @param sqlStartTime sql执行起始时间
*/
public void setSqlStartTime(Date sqlStartTime) {
this.sqlStartTime = sqlStartTime;
}
/**
* 获取sql执行结束时间
*
* @return sql_end_time - sql执行结束时间
*/
public Date getSqlEndTime() {
return sqlEndTime;
}
/**
* 设置sql执行结束时间
*
* @param sqlEndTime sql执行结束时间
*/
public void setSqlEndTime(Date sqlEndTime) {
this.sqlEndTime = sqlEndTime;
}
/**
* 获取sql执行时间
*
* @return sql_time - sql执行时间
*/
public Date getSqlTime() {
return sqlTime;
}
/**
* 设置sql执行时间
*
* @param sqlTime sql执行时间
*/
public void setSqlTime(Date sqlTime) {
this.sqlTime = sqlTime;
}
/**
* 获取返回的数据
*
* @return invoke_return_resp - 返回的数据
*/
public String getInvokeReturnResp() {
return invokeReturnResp;
}
/**
* 设置返回的数据
*
* @param invokeReturnResp 返回的数据
*/
public void setInvokeReturnResp(String invokeReturnResp) {
this.invokeReturnResp = invokeReturnResp == null ? null : invokeReturnResp.trim();
}
/**
* 获取方法传入的参数
*
* @return invoke_param - 方法传入的参数
*/
public String getInvokeParam() {
return invokeParam;
}
/**
* 设置方法传入的参数
*
* @param invokeParam 方法传入的参数
*/
public void setInvokeParam(String invokeParam) {
this.invokeParam = invokeParam == null ? null : invokeParam.trim();
}
}
二、SysLogMapper.java
package com.itwopqq.booting.system.mapper;
import com.itwopqq.booting.code.generator.MyMapper;
import com.itwopqq.booting.system.model.SysLog;
public interface SysLogMapper extends MyMapper<SysLog> {
}
三、SysLogMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwopqq.booting.system.mapper.SysLogMapper">
<resultMap id="BaseResultMap" type="com.itwopqq.booting.system.model.SysLog">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="invoke_method" jdbcType="VARCHAR" property="invokeMethod" />
<result column="invoke_sql" jdbcType="VARCHAR" property="invokeSql" />
<result column="sql_start_time" jdbcType="TIMESTAMP" property="sqlStartTime" />
<result column="sql_end_time" jdbcType="TIMESTAMP" property="sqlEndTime" />
<result column="sql_time" jdbcType="TIMESTAMP" property="sqlTime" />
<result column="invoke_return_resp" jdbcType="LONGVARCHAR" property="invokeReturnResp" />
<result column="invoke_param" jdbcType="LONGVARCHAR" property="invokeParam" />
</resultMap>
</mapper>
综上所述:我们代码已经生成完毕了,但是我们生成的代码只有model和Mapper下面的代码类,我们其他包下面的代码未生成,比如说:service、serviceimpl、controller、dto。我们该插件可以自动生成的值包括model和Mapper下面的内容,下面我们将介绍 结合其他插件生成service、serviceimpl、controller以及dto包下的代码;
我们要生成其他的代码,我们就要基于mybatis-generator-maven-plugin插件做延伸,这里关于该插件延伸的具体实现不做具体介绍,后续博客中会在进行延伸讲解,
自定义插件百度网盘地址:
链接:https://pan.baidu.com/s/18Aw16VtoGrQWONxQlBB7tA 密码:vmvk,
我们将百度网盘里面下载下来的jar包放到我们当前电脑中,或者上传至maven私服上,这里我们是放到当前电脑中(位置:/Users/fanzhen/Documents/local-repository/business-generator-master/business-generator-1.1-jar-with-dependencies.jar)
pom文件的配置:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itwopqq</groupId>
<artifactId>booting</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>booting</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!-- 模块包名 -->
<modulePackage>com.itwopqq.booting.system</modulePackage>
<!-- 生成代码目录 -->
<targetProject>src/main/java</targetProject>
<targetMapperProject>src/main/resources</targetMapperProject>
<targetMapperPackage>mybatis.system.mapping</targetMapperPackage>
<targetServicePackage>com.itwopqq.booting.system.service</targetServicePackage>
<targetServiceImplPackage>com.itwopqq.booting.system.serviceimpl</targetServiceImplPackage>
<targetControllerPackage>com.itwopqq.booting.system.controller</targetControllerPackage>
<hsqldb.version>2.2.8</hsqldb.version>
<cobertura.version>1.9.4.1</cobertura.version>
<freemarker.version>2.3.23</freemarker.version>
<hsqldb.version>2.2.8</hsqldb.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
<!-- shiro start -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- shiro end -->
<!--添加junit环境的jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- mybatis代码生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.sourceforge.cobertura</groupId>
<artifactId>cobertura</artifactId>
<version>${cobertura.version}</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.8.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>${hsqldb.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>3.0-alpha-2</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
<dependency>
<groupId>com.fanzhen</groupId>
<artifactId>business_generator_plugins</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>/Users/fanzhen/Documents/local-repository/business-generator-master/business-generator-1.1-jar-with-dependencies.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 代码生成插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--配置文件的路径-->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
<dependency>
<groupId>com.fanzhen</groupId>
<artifactId>business_generator_plugins</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>/Users/fanzhen/Documents/local-repository/business-generator-master/business-generator-1.1-jar-with-dependencies.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
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>
<!-- 数据库驱动:可选择我们本地硬盘上面的数据库驱动包,在这里我们已经在pom文件中build里面配置了 -->
<!-- <classPathEntry location="D:\workProjects\springBootMybatis\src\main\resources\lib\mysql-connector-java-5.1.9.jar"/>-->
<context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 模块包名 -->
<property name="modulePackage" value="com.itwopqq.booting.system"/>
<!-- 生成项目 -->
<property name="targetProject" value="src/main/java"/>
<property name="targetMapperProject" value="src/main/resources"/>
<property name="targetMapperPackage" value="mybatis.system.mapping"/>
<property name="targetServicePackage" value="com.itwopqq.booting.system.service"/>
<property name="targetServiceImplPackage" value="com.itwopqq.booting.system.serviceimpl"/>
<property name="targetControllerPackage" value="com.itwopqq.booting.system.controller"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.itwopqq.booting.code.generator.MyMapper"/>
</plugin>
<!-- 自定义plugins插件 -->
<plugin type="com.business.code.generator.ServiceTemplatePlugin">
</plugin>
<plugin type="com.business.code.generator.ServiceImplTemplatePlugin">
<property name="isOverride" value="true"/>
</plugin>
<plugin type="com.business.code.generator.ControllerTemplatePlugin">
</plugin>
<!-- 注释生成器 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://47.100.254.99:3306/booting?useUnicode=true&characterEncoding=utf-8&useSSL=true"
userId="root" password="123456">
</jdbcConnection>
<!-- 类型转换器或者加类型解析器 -->
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer, true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- java模型生成器 -->
<!-- targetProject:自动生成代码的位置 -->
<javaModelGenerator targetPackage="${modulePackage}.model"
targetProject="src/main/java">
<!-- TODO enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- map xml 生成器 -->
<!-- targetPackage 是 指targetProject下的包-->
<sqlMapGenerator targetPackage="${targetMapperPackage}"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- mapper 或者就是dao接口生成器 -->
<javaClientGenerator targetPackage="${modulePackage}.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- pojo 实体生成器 -->
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<!-- schema为数据库名 可不写 -->
<table tableName="sys_log" domainObjectName="SysLog"
enableInsert="true" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<!-- 忽略字段 可选的(0 or 1) -->
<!-- <ignoreColumn column="is_use" /> -->
<!--//无论字段是什么类型,生成的类属性都是varchar。 可选的(0 or 1) 测试无效 -->
<!-- <columnOverride column="city_code" jdbcType="VARCHAR" /> -->
</table>
</context>
</generatorConfiguration>
执行maven的plugins命令,可以看到我们的service、serviceimpl和controller下面的代码已经生成了
SysLogController.java
package com.itwopqq.booting.system.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import com.itwopqq.booting.system.service.SysLogService;
import lombok.extern.slf4j.Slf4j;
/**
* 通用 Controller 代码生成器
* @description
* @author business.generator
*/
@Slf4j
@RestController
public class SysLogController {
@Autowired
private SysLogService sysLogService;
}
SysLogService.java
package com.itwopqq.booting.system.service;
/**
* 通用 service 代码生成器
* @description
* @author business.generator
*/
public interface SysLogService {
}
SysLogServiceImpl.java
package com.itwopqq.booting.system.serviceimpl;
import com.itwopqq.booting.system.service.SysLogService;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
/**
* 通用 serviceImpl 代码生成器
* @description
* @author business.generator
*/
@Slf4j
@Service
public class SysLogServiceImpl implements SysLogService{
}
SysLogMapper.java
package com.itwopqq.booting.system.mapper;
import com.itwopqq.booting.code.generator.MyMapper;
import com.itwopqq.booting.system.model.SysLog;
public interface SysLogMapper extends MyMapper<SysLog> {
}
SysLogMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwopqq.booting.system.mapper.SysLogMapper">
<resultMap id="BaseResultMap" type="com.itwopqq.booting.system.model.SysLog">
<!--
WARNING - @mbg.generated
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="invoke_method" jdbcType="VARCHAR" property="invokeMethod" />
<result column="invoke_sql" jdbcType="VARCHAR" property="invokeSql" />
<result column="sql_start_time" jdbcType="TIMESTAMP" property="sqlStartTime" />
<result column="sql_end_time" jdbcType="TIMESTAMP" property="sqlEndTime" />
<result column="sql_time" jdbcType="TIMESTAMP" property="sqlTime" />
<result column="invoke_return_resp" jdbcType="LONGVARCHAR" property="invokeReturnResp" />
<result column="invoke_param" jdbcType="LONGVARCHAR" property="invokeParam" />
</resultMap>
</mapper>
SysLog.java
package com.itwopqq.booting.system.model;
import java.util.Date;
import javax.persistence.*;
@Table(name = "sys_log")
public class SysLog {
@Id
private Integer id;
/**
* 调用的方法
*/
@Column(name = "invoke_method")
private String invokeMethod;
/**
* 执行的sql
*/
@Column(name = "invoke_sql")
private String invokeSql;
/**
* sql执行起始时间
*/
@Column(name = "sql_start_time")
private Date sqlStartTime;
/**
* sql执行结束时间
*/
@Column(name = "sql_end_time")
private Date sqlEndTime;
/**
* sql执行时间
*/
@Column(name = "sql_time")
private Date sqlTime;
/**
* 返回的数据
*/
@Column(name = "invoke_return_resp")
private String invokeReturnResp;
/**
* 方法传入的参数
*/
@Column(name = "invoke_param")
private String invokeParam;
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取调用的方法
*
* @return invoke_method - 调用的方法
*/
public String getInvokeMethod() {
return invokeMethod;
}
/**
* 设置调用的方法
*
* @param invokeMethod 调用的方法
*/
public void setInvokeMethod(String invokeMethod) {
this.invokeMethod = invokeMethod == null ? null : invokeMethod.trim();
}
/**
* 获取执行的sql
*
* @return invoke_sql - 执行的sql
*/
public String getInvokeSql() {
return invokeSql;
}
/**
* 设置执行的sql
*
* @param invokeSql 执行的sql
*/
public void setInvokeSql(String invokeSql) {
this.invokeSql = invokeSql == null ? null : invokeSql.trim();
}
/**
* 获取sql执行起始时间
*
* @return sql_start_time - sql执行起始时间
*/
public Date getSqlStartTime() {
return sqlStartTime;
}
/**
* 设置sql执行起始时间
*
* @param sqlStartTime sql执行起始时间
*/
public void setSqlStartTime(Date sqlStartTime) {
this.sqlStartTime = sqlStartTime;
}
/**
* 获取sql执行结束时间
*
* @return sql_end_time - sql执行结束时间
*/
public Date getSqlEndTime() {
return sqlEndTime;
}
/**
* 设置sql执行结束时间
*
* @param sqlEndTime sql执行结束时间
*/
public void setSqlEndTime(Date sqlEndTime) {
this.sqlEndTime = sqlEndTime;
}
/**
* 获取sql执行时间
*
* @return sql_time - sql执行时间
*/
public Date getSqlTime() {
return sqlTime;
}
/**
* 设置sql执行时间
*
* @param sqlTime sql执行时间
*/
public void setSqlTime(Date sqlTime) {
this.sqlTime = sqlTime;
}
/**
* 获取返回的数据
*
* @return invoke_return_resp - 返回的数据
*/
public String getInvokeReturnResp() {
return invokeReturnResp;
}
/**
* 设置返回的数据
*
* @param invokeReturnResp 返回的数据
*/
public void setInvokeReturnResp(String invokeReturnResp) {
this.invokeReturnResp = invokeReturnResp == null ? null : invokeReturnResp.trim();
}
/**
* 获取方法传入的参数
*
* @return invoke_param - 方法传入的参数
*/
public String getInvokeParam() {
return invokeParam;
}
/**
* 设置方法传入的参数
*
* @param invokeParam 方法传入的参数
*/
public void setInvokeParam(String invokeParam) {
this.invokeParam = invokeParam == null ? null : invokeParam.trim();
}
}
小结:
至此整个流程就结束了,代码生成的整个功能已经完结,我们后续开发业务代码的时候可以不用编写每一层的代码了,只需要写我们的业务逻辑即可,
下一章节将介绍整合logger搭建日志记录框架,并将上述涉及到的源码附上去。