一、前情提要
上一次我们做到了导入并配置MyBatis
、通用Mapper
、PageHelper
,这一次我们使用MyBatis Generator
来生成实体层(entity)、Dao层相关的类和Mybatis相关的xml文件。
二、任务详情
- 新建一个MyBatisGenerator-Config的新项目
- 导入相关的第三方工具
- 编写
MyBatisGenerator
需要的XML
配置文件 - 编写
MyBatisGenerator
所需要的相关类 - 将生成的文件复制到原项目的相应的位置中
三、相关介绍
1.什么是MyBatisGenerator?
MyBatisGenerator是一个Mybatis的代码生成器,在我们编写Mybatis的时候,首先得创建相关数据表的实体类,还有相关的XML配置文件,这样手动一个个创建配置文件是一件很枯燥的事情,毕竟都是重复性的工作,所以MyBatisGenerator就应运而生。此链接为MyBatisGenerator的官网,有兴趣的同学可以参考一下:点我跳转。
四、实践操作
注意:此次实践操作有参考到此文档:点我跳转,如果我有一些地方写的不明白可以参考此文档
1.创建一个名为MyBatisGenerator-Config的Maven项目
2.在pom.xml
中导入第三方库
<!-- 引入log4j日志依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<!-- 阿里开源数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!-- mybatis 逆向生成工具 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
3.创建target
文件夹
点击file
–>Project Structure
,创建target
文件夹
一般IDEA会自动识别target
文件夹是输出文件夹(标为橙色Exclude Folders)
4.在项目根目录下创建配置文件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>
<context id="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.repairsystem.utils.MyMapper"/>
</plugin>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/machineroomsystem"
userId="root"
password="123456">
</jdbcConnection>
<!-- 对应生成的pojo所在包 -->
<javaModelGenerator targetPackage="com.repairsystem.entity" targetProject="src/main/java"/>
<!-- 对应生成的mapper所在目录 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!-- 配置mapper对应的java映射 -->
<javaClientGenerator targetPackage="com.repairsystem.mapper" targetProject="src/main/java"
type="XMLMAPPER"/>
<!-- 配置 数据库逆向生成配置的表-->
<table tableName="administrator"></table>
<table tableName="building"></table>
<table tableName="class"></table>
<table tableName="complete_order"></table>
<table tableName="orders"></table>
<table tableName="role"></table>
</context>
</generatorConfiguration>
5.在resources
文件夹下创建log4j.properties
日志配置文件
log4j.rootLogger=INFO,console
# log4j.logger.org.mybatis = INFO
log4j.logger.com.imooc.mapper=INFO
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
6.在java
文件夹下创建主类GeneratorDisplay
package com.svideos.mybatis.utils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class GeneratorDisplay {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
GeneratorDisplay generatorSqlmap = new GeneratorDisplay();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
7.右键run
运行项目
8.生成成功
你刷新以下项目,会看见多出了几个包,分别是
9.将生成的文件迁移到原项目中
在迁移后你会发现dao里面的类都会出错,那是因为少了一个Mapper工具类,下一步会讲到
10.创建工具类MyMapper
在com.repairsystem.utils
下创建工具类MyMapper
package com.repairsystem.utils;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
//TODO
//FIXME 特别注意,该接口不能被扫描到,否则会出错
}
11.在RepairsystemApplication
中配置扫描路径
在类上面添加这两行代码
@SpringBootApplication(scanBasePackages = {"com.repairsystem"})
@MapperScan(basePackages = {"com.repairsystem.dao"})
12.测试
在test
文件夹下的包com.repairsystem
下创建测试类MybatisTest
注意:请在数据表administrator
中自创几条数据,不然没数据查询为空的时候就不好判断
package com.repairsystem;
import com.repairsystem.dao.AdministratorMapper;
import com.repairsystem.entity.Administrator;
import com.repairsystem.service.MybatisTestService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
/**
* @author CheungChingYin
* @date 2019/1/6
* @time 15:07
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RepairsystemApplication.class)
public class MyBatisTest {
@Autowired
private AdministratorMapper adminMapper;
@Test
public void searchAllAdministrator() {
List<Administrator> list = adminMapper.selectAll();
for(Administrator admin : list){
System.out.println(admin.getAdminName());
}
}
}
我的administrator
数据表:
运行结果:
看到有自己自创的数据即为成功。
到这里,MybatisGenerator
所有操作已经完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。