【机房报修管理系统】后端篇(五) 使用MybatisGenerator生成实体层和DAO层

一、前情提要


    上一次我们做到了导入并配置MyBatis通用MapperPageHelper,这一次我们使用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所有操作已经完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值