JavaEE_12_Mybatis逆向工程

文章详细介绍了如何使用Mybatis逆向工程来初始化SpringBoot项目,包括配置pom.xml,创建application.yml,以及启动类。接着,文章讲解了代码生成器的配置和使用,通过MBGTest类自动化生成entity、mapper及mapper.xml。此外,还讨论了Mybatis的核心方法,如查询、删除、更新和插入操作。最后,文章展示了如何集成PageHelper分页插件进行分页查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Mybatis逆向工程》

目录

  • 项目初始化(熟练)
  • 代码生成器(掌握)
  • 核心方法(掌握)
  • 分页插件(熟练)

一、项目初始化

  1. 新建maven项目;

请添加图片描述

  1. pom.xml
<!-- 继承springboot,使当前项目称为springboot项目 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
</parent>

<dependencies>
    <!-- web开发 -->
    <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>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <!--swagger-->
    <dependency>
        <groupId>com.spring4all</groupId>
        <artifactId>swagger-spring-boot-starter</artifactId>
        <version>1.9.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
        <version>1.9.6</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    <!--mysql-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
</dependencies>
  1. application.yml
server:
  port: 8080
swagger:
  title: 《Mybatis逆向工程》     #文档标题
  description: 代码生成器测试    #文档描述
  global-operation-parameters:
    - name: Authorization      #全局参数
      description: 认证信息     #参数描述
      modelRef: string          #数据类型
      parameterType: header     #请求类型(请求头/请求体)
      required: false           #是否必须
spring:
  #数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
    username: root
    password: 123456
mybatis:
  #xml扫描路径
  mapper-locations: classpath:mappers/*Mapper.xml
  configuration:
    #日志打印
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  1. 启动类(com.hpr.MainApplication)
package com.hpr;

import com.spring4all.swagger.EnableSwagger2Doc;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@EnableSwagger2Doc
@SpringBootApplication
@MapperScan("com.hpr.mapper")
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class);
    }
}
  1. 启动测试,访问http://localhost:8080/doc.html

执行结果

请添加图片描述

二、代码生成器

  1. pom.xml
<!--代码生成器-->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>RELEASE</version>
</dependency>
  1. resources/config/mbg.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="MybatisReverse" targetRuntime="MyBatis3">

        <!-- 配置生成的实体类的注释问题,设置为true不生成 ,如果不设置的话会默认生成很多的注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 配置数据源,注意下面的driverClass,不同版本的数据库驱动不同的 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"
                  userId="root"
                        password="123456">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 指定entity的生成位置 -->
        <javaModelGenerator targetPackage="com.hpr.entity"
                            targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 指定mapper.xml的生成位置 -->
        <sqlMapGenerator targetPackage="mappers"
                         targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 指定mapper生成位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.hpr.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- table指定每个表的生成策略 ,tableName表名,domainObjectName要生成的Java类名 -->
        <table tableName="teacher" domainObjectName="Teacher"/>
        <table tableName="student" domainObjectName="Student"/>
    </context>
</generatorConfiguration>
  1. com.hpr.generate.MBGTest
package com.hpr.generate;

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 MBGTest {

    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<>();
        File configFile = new File("src/main/resources/config/mbg.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(true);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成结束!");
    }
}
  1. 运行MBGTest类

执行结果

代码生成器将为我们自动生成entity、mapper及mapper.xml。

请添加图片描述

三、核心方法

方法汇总

//查询满足条件的总记录数,类似select * from xxx where xxx
long countByExample(TeacherExample example);

//条件删除
int deleteByExample(TeacherExample example);

//主键删除
int deleteByPrimaryKey(Integer teacherId);

//新增数据(100%字段全部插入)
int insert(Teacher row);

//新增数据(null值字段忽略不插入)
int insertSelective(Teacher row);

//条件查询
List<Teacher> selectByExample(TeacherExample example);

//主键查询
Teacher selectByPrimaryKey(Integer teacherId);

//条件修改(null值字段忽略不修改)
int updateByExampleSelective(@Param("row") Teacher row, @Param("example") TeacherExample example);

//条件修改(100%字段全部修改)
int updateByExample(@Param("row") Teacher row, @Param("example") TeacherExample example);

//主键修改(null值字段忽略不修改)
int updateByPrimaryKeySelective(Teacher row);

//主键修改(100%字段全部修改)
int updateByPrimaryKey(Teacher row);

案例一

  1. com.hpr.test.Test1
package com.hpr.test;

import com.hpr.entity.Student;
import com.hpr.entity.StudentExample;
import com.hpr.mapper.StudentMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class Test1 {

    @Autowired
    private StudentMapper studentMapper;

    @Test
    public void testGenerateCode() {
        //查询语文成绩60以上,英语成绩100以下的学生信息
        List<Student> students = studentMapper.selectByExample(new StudentExample() {{
            createCriteria().andChineseGreaterThan(60)
                    .andEnglishLessThan(100);
        }});
        students.forEach(System.out::println);
    }
}
  1. 运行测试

执行结果

请添加图片描述

四、分页插件

  1. pom.xml
<!--分页插件-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>RELEASE</version>
</dependency>
  1. com.hpr.test.Test1
...
public class Test1 {
    ...
    @Test
    public void testPageHelper() {
        //pageNum:页码,pageSize:每页记录数
        PageHelper.startPage(2, 2);
        List<Student> students = studentMapper.selectByExample(null);
        PageInfo<Student> page = new PageInfo<>(students);
        System.out.println("总页数:" + page.getPages());
        System.out.println("总记录数:" + page.getTotal());
        page.getList().forEach(System.out::println);
    }
}
  1. 运行测试

执行结果

请添加图片描述

总结

重点

  1. 代码生成器的使用;
  2. 生成代码的核心方法;
  3. 分页插件的配置及使用。

难点

  1. 生成代码的核心方法;
  2. 分页插件的配置及使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值