IDEA SpringBoot集成MyBatis + Generator代码生成工具的配置教程
这篇用来给自己配置springBoot+myBatis做的一些笔记,所以仅为了让自己看懂为目标而记录,所以如果大家看不是很懂,或者讲解不是很清晰的话可以移步其他博主的博文哈。
环境:IDE:IDEA 数据库:mysql
直接开始吧。
1.新建项目
从IDEA新建一个Spring Initializr项目:然后点击next
其中:GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构,ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。如果只是学习安装的话可以按默认名就行了。
选择自己所需要的依赖配置。我们搭建的是简单的web项目,首先勾选spring web Starter
我们用的是mySQL数据库,以及myBatis框架,所以勾选下面两个。
新建完成,POM文件如下
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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.0</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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2. 配置文件
你会发现左边文件栏中有一个全局的配置文件application.properties,可以在里面贴上常用的配置属性,详细理解可以参考:
我习惯用application.yml代替application.properties(yml文件可以省略掉properties中的大量的路径前缀,结构看上去也比较清晰,反正springBoot最后也会把yml文件转换成properties,为什么不用yml呢ヾ(≧▽≦*)o)
通过与配置文件相同的命名规范,创建 application-{profiles}.yml 文件 存放不同环境的参数。
如:
- application-dev.yml为开发环境
- application-test.yml为测试环境
- application-prod.yml为生产环境
然后由application.yml里调整哪个环境。
将application.properties删掉,新创两个文件:application.yml和application-dev.yml
application.yml
spring:
profiles:
active: dev
application-dev.yml
# application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/user?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
mybatis:
type-aliases-package: com.example.entity
mapper-locations: classpath:mapping/*Mapper.xml
#showSql
logging:
level:
com:
example:
mapper : debug
然后在java目录下创建controller包,entity包,mapper包,service包,
在resources下创建一个mapping包,结构如下所示:
记得DemoApplication要和包放在同一层目录下,不然SpringBoot会扫描不到包内的文件位置。
3.使用 MyBatis Generator逆向工程生成实体类,mapper接口以及xml映射文件
先在mysql里找一个用于项目的的数据库表。我建了个简单的账户密码表。
DDL语句:
CREATE TABLE `user` (
`user_name` varchar(20) NOT NULL DEFAULT '',
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
数据库建完之后,我们来配置myBatis Generator插件。
在pom.xml文件中,找到下面这串代码
在plugins中添加插件
<!--反向工具插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
然后在resources中创建generatorConfig.xml和generator.properties配置文件
代码如下:
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="generator.properties" />
<!--数据库驱动包路径 -->
<classPathEntry location="${drive.class.path}" />
<context id="MySQLTables" targetRuntime="MyBatis3">
<!--关闭注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true" /><!-- 是否取消注释 -->
<property name="suppressDate" 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.java}">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成xml mapper文件 路径 -->
<sqlMapGenerator targetPackage="${xml.mapper.package}"
targetProject="${target.project.resources}">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成的Dao接口 的包路径 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="${dao.package}" targetProject="${target.project.java}">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--对应数据库表名 -->
<!-- <table tableName="msgboard" domainObjectName="Msg"
enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false">
如果设置为true,生成的entity类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE_Time,生成的属性名字就是BORN_DATE,而不会是bornDateTime
<property name="useActualColumnNames" value="true" />
忽略列,不生成bean 字段
<ignoreColumn column="FRED" />
指定列的java数据类型
<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
</table> -->
<table tableName="user" domainObjectName="User"
enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false">
<property name="useActualColumnNames" value="true" />
</table>
</context>
</generatorConfiguration>
其中
其余的属性我们暂时先用不到,如果想要了解可以看看这篇博客:
generator.properties
# jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123
#dbcp
initialSize=0
maxActive=10
maxIdle=10
minIdle=1
maxWait=60000
#mybatis generator
drive.class.path=G:/JAVAclass/apache-maven-3.6.0/maven-repository/mysql/mysql-connector-java/5.1.19/mysql-connector-java-5.1.19.jar
model.package=com.example.demo.entity
dao.package=com.example.demo.mapper
xml.mapper.package=mapping
target.project.java=G:/IdeaProjects/myBatisByMyBlog/src/main/java
target.project.resources=G:/IdeaProjects/myBatisByMyBlog/src/main/resources
其中
包名和路径按照自己电脑的需求更改。
创建完文件后,点击 Run→ Edit configuration
点击左上角的加号,选择maven,填写右边的信息(主要就名称、工作文件夹和命令行,命令行固定格式:mybatis-generator:generate -e)
创建完后点击最右侧有一栏maven栏,如果run configuration添加成功的话会有下图这样的run configuration选项。
右键运行,控制台显示生成文件(log4j的警告提示不用管)
然后点开左侧的工作文件栏,可以看到实体类、mapper接口和映射文件都生成了
4. 测试:查询数据库中的信息
在controller包中创建一个TestUser类,代码如下:
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestUser {
@Autowired
UserMapper userMapper;
@RequestMapping("/testUser")
public User testUser(){
User user =userMapper.selectByPrimaryKey("cancer");
return user;
};
}
然后运行DemoAppllication启动服务端
打开浏览器,在url地址输入http://localhost:8080/testUser
成功获取数据库内信息。
这样下来一套的springboot+mybatis+generator生成工具的配置就完成了。
这篇博客就是记录一下自己学习过程以及练手,如果有问题的话可以在评论里探讨一哈,如果没人看的话就算啦。