在spring boot + mybatis的项目中,我们可以利用mybatis mgenerator和通用mapper模板来自动生成项目中所需要的POJO类,以及对应的mapper接口mapper.xml文件,对于一些字段较多的表来说,可以节省很多时间,并且减少手写实体类所带来的错误。
1.创建一个spring boot项目
new-project创建springboot
勾选web
点击next完成。
2.修改pom.xml文件
修改pom.xml文件,添加自动生成代码的依赖和通用mapper包的依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.geneator.test</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 打war包 依赖tomcat api -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- 通用 Mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.45</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--mybatis-generator包-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--mybatis 自动生成dao,model,mapper,generaotr插件-->
<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.2</version>
<dependencies>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
</dependencies>
<configuration>
<configurationFile>
${basedir}/src/main/resources/generatorConfig.xml
</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.在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>
<!--引入配置文件-->
<properties resource="db-config.properties"></properties>
<!-- 引入数据库驱动 -->
<classPathEntry location="${jdbc.driverClassLocation}"/>
<!-- 这个地方使用MyBatis3,如果使用 MyBatis3Simple不生成XXXBySample-->
<context id="baseset" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="javaFileEncoding" value="UTF-8"/>
<property name="useMapperCommentGenerator" value="false"/>
<!-- 通用mapper插件 -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<!-- 此处的 MyMapper注意一定不能被扫描到-->
<property name="mappers" value="${generator.mappers}"/>
<!-- caseSensitive 是否区分大小写,默认值 false。如果数据库区分大小写,这里就需要配置为 true,这样当表名为 USER 时,
会生成 @Table(name = "USER") 注解,否则使用小写 user 时会找不到表。-->
<property name="caseSensitive" value="true"/>
<!--forceAnnotation 是否强制生成注解,默认 false,如果设置为 true,不管数据库名和字段名是否一致,都会生成注解(包含 @Table 和 @Column)。-->
<property name="forceAnnotation" value="true"/>
</plugin>
<commentGenerator>
<property name="suppressDate" value="true"/><!-- 是否生成注释代时间戳-->
<property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
</commentGenerator>
<jdbcConnection
driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.connectionURL}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<javaModelGenerator targetPackage="${generator.javaModel-targetPackage}" targetProject="${generator.targetProject}"/>
<sqlMapGenerator targetPackage="${generator.sqlMap-targetPackage}" targetProject="${generator.targetProject}"/>
<javaClientGenerator targetPackage="${generator.javaClient-targetPackage}" targetProject="${generator.targetProject}"
type="XMLMAPPER"/>
<!--数据库中对应的表名,多个表可以写多个tableName-->
<table tableName="t_person_base_info"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="c_id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>
</table>
<table tableName="T_HEALTH_CHECK"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="c_id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>
</table>
</context>
</generatorConfiguration>
新建数据库配置文件
#jdbc 连接对象
#oracle jar文件位置
jdbc.driverClassLocation=D:/tools/ojdbc6-11.2.0.1.0.jar
jdbc.driverClass=oracle.jdbc.OracleDriver
jdbc.connectionURL=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=system
jdbc.password=123456
# Generator
generator.targetProject=src/main/java
generator.mappers=tk.mybatis.mapper.common.Mapper
generator.javaModel-targetPackage=com.geneator.test.demo.bean
generator.sqlMap-targetPackage=com.geneator.test.demo.xml
generator.javaClient-targetPackage=com.geneator.test.demo.mapper
数据库中新建对应的表。(此处我使用已有的表T_HEALTH_CHECK,t_person_base_info)
4.配置maven
点击run下的Edit Configurations.
进入后,点击左上角的+,选择maven.
在Name出输入名字,
在command line 中输入:mybatis-generator:generate -e
然后点击idea右上角的绿色箭头:
运行成功后控制台如下:
"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -Dmaven.multiModuleProjectDirectory=D:\geneatortest "-Dmaven.home=F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3" "-Dclassworlds.conf=F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3\bin\m2.conf" "-javaagent:F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\lib\idea_rt.jar=57949:F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\bin" -Dfile.encoding=UTF-8 -classpath "F:\Program Files\JetBrains\IntelliJ IDEA 2018.1.2\plugins\maven\lib\maven3\boot\plexus-classworlds-2.5.2.jar" org.codehaus.classworlds.Launcher -Didea.version=2018.1.2 mybatis-generator:generate -e
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- mybatis-generator-maven-plugin:1.3.2:generate (default-cli) @ demo ---
[WARNING] The POM for com.oracle:ojdbc6:jar:11.2.0.1.0 is missing, no dependency information available
[INFO] Connecting to the Database
[INFO] Introspecting table t_person_base_info
log4j:WARN No appenders could be found for logger (org.mybatis.generator.internal.db.DatabaseIntrospector).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[INFO] Introspecting table T_HEALTH_CHECK
[INFO] Generating Record class for table T_PERSON_BASE_INFO
[INFO] Generating Mapper Interface for table T_PERSON_BASE_INFO
[INFO] Generating SQL Map for table T_PERSON_BASE_INFO
[INFO] Generating Record class for table T_HEALTH_CHECK
[INFO] Generating Mapper Interface for table T_HEALTH_CHECK
[INFO] Generating SQL Map for table T_HEALTH_CHECK
[INFO] Saving file TPersonBaseInfoMapper.xml
[INFO] Saving file THealthCheckMapper.xml
[INFO] Saving file TPersonBaseInfo.java
[INFO] Saving file TPersonBaseInfoMapper.java
[INFO] Saving file THealthCheck.java
[INFO] Saving file THealthCheckMapper.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.343 s
[INFO] Finished at: 2018-12-01T18:15:17+08:00
[INFO] Final Memory: 17M/172M
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
整个项目路径如下图:
5.生成的代码如下
1.生成的POJO对象如下:
package com.geneator.test.demo.bean;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
@Table(name = "T_HEALTH_CHECK")
public class THealthCheck {
@Column(name = "C_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "select SEQ_T_HEALTH_CHECK.nextval from dual")
private String cId;
@Column(name = "HEALTH_RECORD_CODE")
private String healthRecordCode;
@Column(name = "HEALTH_CHECK_ID")
private String healthCheckId;
@Column(name = "NAME")
private String name;
@Column(name = "CHECK_DATE")
private Date checkDate;
/**
* @param cId
*/
public void setcId(String cId) {
this.cId = cId;
}
/**
* @return HEALTH_RECORD_CODE
*/
public String getHealthRecordCode() {
return healthRecordCode;
}
/**
* @param healthRecordCode
*/
public void setHealthRecordCode(String healthRecordCode) {
this.healthRecordCode = healthRecordCode;
}
/**
* @return HEALTH_CHECK_ID
*/
public String getHealthCheckId() {
return healthCheckId;
}
/**
* @param healthCheckId
*/
public void setHealthCheckId(String healthCheckId) {
this.healthCheckId = healthCheckId;
}
/**
* @return NAME
*/
public String getName() {
return name;
}
/**
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* @return CHECK_DATE
*/
public Date getCheckDate() {
return checkDate;
}
/**
* @param checkDate
*/
public void setCheckDate(Date checkDate) {
this.checkDate = checkDate;
}
2.生成的mapper对象如下:
package com.geneator.test.demo.mapper;
import com.geneator.test.demo.bean.THealthCheck;
import tk.mybatis.mapper.common.Mapper;
public interface THealthCheckMapper extends Mapper<THealthCheck> {
}
3.生成的mapper.xml文件如下:
网友评论