美文网首页
MyBatis的逆向工程

MyBatis的逆向工程

作者: 低调的灬攻城狮 | 来源:发表于2020-03-20 02:01 被阅读0次

逆向工程:从代码和成UML图形;是通过从特定实现语言的映射而把代码转换为模型的过程。

MyBatis逆向工程创建

  • 数据库文件:school.sql
    /*
     Navicat MySQL Data Transfer
     Source Server         : MySQL
     Source Server Type    : MySQL
     Source Server Version : 80018
     Source Host           : localhost:3307
     Source Schema         : school
     Target Server Type    : MySQL
     Target Server Version : 80018
     File Encoding         : 65001
     Date: 20/03/2020 01:37:13
    */
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for score
    -- ----------------------------
    DROP TABLE IF EXISTS `score`;
    CREATE TABLE `score`  (
      `scid` int(11) NOT NULL AUTO_INCREMENT,
      `sid` int(11) NULL DEFAULT NULL,
      `suid` int(11) NULL DEFAULT NULL,
      `score` decimal(10, 2) NOT NULL,
      `sdesc` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`scid`) USING BTREE,
      INDEX `FK_sc_c`(`sid`) USING BTREE,
      INDEX `FK_sc_su`(`suid`) USING BTREE,
      CONSTRAINT `FK_sc_c` FOREIGN KEY (`sid`) REFERENCES `student` (`sid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
      CONSTRAINT `FK_sc_su` FOREIGN KEY (`suid`) REFERENCES `subject` (`suid`) ON DELETE RESTRICT ON UPDATE RESTRICT
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of score
    -- ----------------------------
    INSERT INTO `score` VALUES (1, 1, 1, 100.00, '高数');
    INSERT INTO `score` VALUES (2, 2, 2, 100.00, 'Java');
    INSERT INTO `score` VALUES (3, 3, 3, 100.00, 'HTML');
    
    -- ----------------------------
    -- Table structure for student
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student`  (
      `sid` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `pass` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `tel` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `addr` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `age` int(11) NOT NULL,
    PRIMARY KEY (`sid`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of student
    -- ----------------------------
    INSERT INTO `student` VALUES (1, 'AAA', '111111', '11111111111', 'AA', 22);
    INSERT INTO `student` VALUES (2, 'BBB', '111111', '11111111111', 'AA', 21);
    INSERT INTO `student` VALUES (3, 'CCC', '222222', '11111111111', 'AA', 20);
    
    -- ----------------------------
    -- Table structure for subject
    -- ----------------------------
    DROP TABLE IF EXISTS `subject`;
    CREATE TABLE `subject`  (
      `suid` int(11) NOT NULL AUTO_INCREMENT,
      `suname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `degree` int(11) NOT NULL,
      PRIMARY KEY (`suid`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of subject
    -- ----------------------------
    INSERT INTO `subject` VALUES (1, 'AAA', 90);
    INSERT INTO `subject` VALUES (2, 'BBB', 90);
    INSERT INTO `subject` VALUES (3, 'CCC', 80);
    
    SET FOREIGN_KEY_CHECKS = 1;
    
  • 新建一个 MAVEN 项目下的resources目录中添加 config.properties配置文件
    #数据库配置
    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3307/school?serverTimezone=UTC
    jdbc.user=root
    jdbc.password=123456
    # 通用Mapper固定配置
    mapper.plugin=tk.mybatis.mapper.generator.MapperPlugin
    mapper.Mapper=tk.mybatis.mapper.common.Mapper
    mapper.forceAnnotation=true
    # 生成文件保存位置
    targetModelPackage=com.pojo
    targetXMLPackage=com.mapper
    targetMapperPackage=com.mapper
    targetJavaProject=src/main/java
    targetResourcesProject=src/main/java
    
  • 在下 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>
    
        <!-- 数据库驱动包位置 -->
        <!-- <classPathEntry location="F:\IDEA-Work\Generate\lib\mysql-connector-java-5.1.21.jar"
          /> -->
        <context id="DB2Tables" targetRuntime="MyBatis3">
              <!-- 序列化model -->
              <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
            <commentGenerator>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!-- 数据库链接URL、用户名、密码 -->
            <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                          connectionURL="jdbc:mysql://localhost:3307/school?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true" userId="root"
                          password="123456">
            </jdbcConnection> -->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                          connectionURL="jdbc:mysql://localhost:3307/school?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC&amp;rewriteBatchedStatements=true" userId="root"
                          password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- 生成模型的包名和位置 -->
            <javaModelGenerator targetPackage="com.pojo" targetProject=".\src">
                <property name="enableSubPackages" value="false"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!-- 生成的映射文件包名和位置 -->
            <sqlMapGenerator targetPackage="com.mapper" targetProject=".\src">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!-- 生成DAO的包名和位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper" targetProject=".\src">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
            <table tableName="student" schema=""/>
            <table tableName="subject" schema=""/>
            <table tableName="score" schema=""/>
        </context>
    </generatorConfiguration>
    
  • 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com</groupId>
        <artifactId>MyBatisGenerate</artifactId>
        <version>1.0-SNAPSHOT</version>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.7</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.4.0</version>
                    <configuration>
                        <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>8.0.19</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>3.3.9</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </project>
    
  • 打开maven菜单,双击运行mybatis-generator:mybatis-generator:generate,运行后会在项目中找到相应的 .java文件和 .xml文件
    generator.png
  • 生成pojo以及mapper接口以及xml文件,分别在所设置的对应的包中,就此MyBatis的逆向工程完成

项目测试

  • IStudentService.java 和 StudentServiceImpl.java
    public interface IStudentService {
        List<Student> getAllStudent();
        Student getStudentBySid(int sid);
    }
    
    @Service
    public class StudentServiceImpl implements IStudentService {
        @Resource
        private StudentMapper stuMapper;
        @Override
        public List<Student> getAllStudent() {
            StudentExample se = new StudentExample();
            return stuMapper.selectByExample(se);
        }
        @Override
        public Student getStudentBySid(int sid) {
            return stuMapper.selectByPrimaryKey(sid);
        }
    }
    
  • StudentController.java
    @RestController
    public class StudentController {
        @Resource
        private IStudentService studentService;
        @GetMapping("/Students")
        public List<Student> getAllStudent(){
            return studentService.getAllStudent();
        }
        @GetMapping("/Students/{sid}")
        public Student getStudentBySid(@PathVariable int sid){
            return studentService.getStudentBySid(sid);
        }
    }
    
  • 测试类 Test.java
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring-mybatis.xml")
    public class TestStudentService {
        @Resource
        private IStudentService studentService;
        @Test
        public void testGetAllStudent(){
            List<Student> list = studentService.getAllStudent();
            for (Student s : list) {
                System.out.println(s);
            }
        }
    }
    
  • 运行结果
     INFO [main] - {dataSource-1} inited
     DEBUG [main] - ==>  Preparing: select sid, name, pass, tel, addr, age from student 
     DEBUG [main] - ==> Parameters: 
     TRACE [main] - <==    Columns: sid, name, pass, tel, addr, age
     TRACE [main] - <==        Row: 1, AAA, 111111, 11111111111, AA, 22
     TRACE [main] - <==        Row: 2, BBB, 111111, 11111111111, BB, 21
     TRACE [main] - <==        Row: 3, CCC, 222222, 11111111111, CC, 20
     DEBUG [main] - <==      Total: 3
    com.pojo.Student@50ecde95
    com.pojo.Student@35a9782c
    com.pojo.Student@70a36a66
    INFO [Thread-1] - {dataSource-1} closed
    

相关文章

  • Mybatis 基础介绍与逆向工程的构建

    Mybatis 基础介绍与逆向工程的构建 Mybatis系列:Mybatis 基础介绍与逆向工程的构建 :http...

  • Springboot中MyBatis逆向工程生成model和ma

    使用org.mybatis.generator逆向工程生成model和mapper 1、引入MyBatis逆向工程...

  • ssm

    工程目录结构 mybatis逆向工程 逆向工程配置文件 generatorConfig.xml文件 逆向工程代码 ...

  • ssm

    mybatis逆向工程 逆向工程配置文件 generatorConfig.xml文件 逆向工程代码 测试类(可以在...

  • mybatis教程

    mybatis逆向工程步骤: 添加逆向工程插件 https://mvnrepository.com/artifac...

  • SpringBoot2(三):整合mybatis完整版

    1. 修改pom.xml文件 添加mybatis、mysql、逆向工程,连接池等依赖 配置mybatis逆向工程m...

  • mybatis逆向工程的使用

    前言: mybatis是目前很流行的持久层框架,其逆向工程更是大大缩减了我们的开发时间。所谓mybatis逆向工程...

  • 用IDEA开发MyBatis逆向工程

    title: 用IDEA开发MyBatis逆向工程tags: MyBatiscategories: MyBatis...

  • Mybatis----(3)

    主要内容1、mybatis逆向工程 今天get到新技能Mybatis的逆向工程,这个功能很好用,跟大家分享一下。 ...

  • Mybatis逆向工程的使用

    何谓逆向工程?mybatis需要程序员自己编写SQL语句,mybatis官方提供逆向工程,可以针对单表自动生成my...

网友评论

      本文标题:MyBatis的逆向工程

      本文链接:https://www.haomeiwen.com/subject/waulyhtx.html