在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

作者:山丘

blog.csdn.net/m0_37922192/article/details/109248865

文章目录

  • 1. 拷贝 Mybatis 反向工程配置文件到项目的根目录下
  • 2. 根据项目及表的情况,修改 GeneratorMapper.xml 配置
  • 3. 在pom.xml 文件中添加 mysql 反向工程依赖
  • 4. 双击生成相关文件
  • 5. 生成的文件
    1. 根据项目及表的情况,修改 GeneratorMapper.xml 配置

    2. 双击生成相关文件

    1. 拷贝 Mybatis 反向工程配置文件到项目的根目录下

    2. 根据项目及表的情况,修改 GeneratorMapper.xml 配置

  • 如果使用 高版本 , 驱动类变为:com.mysql.cj.jdbc.Driver
  • url 后面应该加属性 nullCatalogMeansCurrent=true ,否则生成有问题
  • url 后面应该加属性 nullCatalogMeansCurrent=true ,否则生成有问题

    当前版本 MySQL 数据库为 5.7

    主要根据注释来修改自己的内容

    
    ?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
        !-- 指定连接数据库的 JDBC 驱动包所在位置,指定到你本机的完整路径 --
        classPathEntry location="E:Javatoolmaven_repositorymysqlmysql-connector-java5.1.9mysql-connector-java-5.1.9.jar"/
    
    
    
        !-- 配置 table 表信息内容体,targetRuntime 指定采用 MyBatis3 的版本 --
        context id="tables" targetRuntime="MyBatis3"
            !-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 --
            commentGenerator
                property name="suppressAllComments" value="true"/
            /commentGenerator
            !-- 配置数据库连接信息 --
            jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/springboot"
                            userId="root"
                            password="123456"
            /jdbcConnection
    
    
    
    
            !-- 生成 model 类,targetPackage 指定 model 类的包名, targetProject 指定
            生成的 model 放在 IDEA 的哪个工程下面--
            javaModelGenerator targetPackage="com.md.springboot.model"
                                targetProject="src/main/java"
                property name="enableSubPackages" value="false"/
                property name="trimStrings" value="false"/
            /javaModelGenerator
    
    
    
    
            !-- 生成 MyBatis 的 Mapper.xml 文件,targetPackage 指定 mapper.xml 文件的
            包名, targetProject 指定生成的 mapper.xml 放在 IDEA 的哪个工程下面 --
            sqlMapGenerator targetPackage="com.md.springboot.mapper"
                             targetProject="src/main/java"
                property name="enableSubPackages" value="false"/
            /sqlMapGenerator
    
    
    
    
    
            !-- 生成 MyBatis 的 Mapper 接口类文件,targetPackage 指定 Mapper 接口类的包
            名, targetProject 指定生成的 Mapper 接口放在 IDEA 的哪个工程下面 --
            javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.md.springboot.mapper" targetProject="src/main/java"
                property name="enableSubPackages" value="false"/
            /javaClientGenerator
    
    
    
    
    
            !-- 数据库表名及对应的 Java 模型类名,有几个表写几个table --
            table tableName="t_student" domainObjectName="Student"
                   enableCountByExample="false"
                   enableUpdateByExample="false"
                   enableDeleteByExample="false"
                   enableSelectByExample="false"
                   selectByExampleQueryId="false"/
    
    
        /context
    /generatorConfiguration
    

    此时会报错,如下

    这个时候可以不用理会,项目也是会正常运行的,当然也可以这样
    在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

    添加之后就不会报红了

    3. 在pom.xml 文件中添加 mysql 反向工程依赖

    
    build
            plugins
                !--mybatis 代码自动生成插件--
                plugin
                    groupIdorg.mybatis.generator/groupId
                    artifactIdmybatis-generator-maven-plugin/artifactId
                    version1.3.6/version
                    configuration
                        !--配置文件的位置--
                        configurationFileGeneratorMapper.xml/configurationFile
                        verbosetrue/verbose
                        overwritetrue/overwrite
                    /configuration
                /plugin
            /plugins
    
        /build
    

    4. 双击生成相关文件

    5. 生成的文件

    自动生成model/Student、实体类

    以及StudentMapper,接口

    StudentMapper.xml 具体对数据库的操作

    这样方便我们使用,具体的下面详细介绍,注意看注释
    在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

    Student

    
    package com.md.springboot.model;
    
    public class Student {
        private Integer id;
    
        private String name;
    
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    

    StudentMapper

    
    package com.md.springboot.mapper;
    
    import com.md.springboot.model.Student;
    
    public interface StudentMapper {
        int deleteByPrimaryKey(Integer id);
    
        int insert(Student record);
    
        int insertSelective(Student record);
    
        Student selectByPrimaryKey(Integer id);
    
        int updateByPrimaryKeySelective(Student record);
    
        int updateByPrimaryKey(Student record);
    }
    

    StudentMapper.xml

    
    ?xml version="1.0" encoding="UTF-8"?
    !DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"
    mapper namespace="com.md.springboot.mapper.StudentMapper"
    
    
      !--
        数据库字段名称     实体对象属性名称
        user_name           userName
        user_age            userAge
    
      --
      !--
        如果数据表中的字段是多个单词构成的,通过Mybatis逆向工程生成的对象属性名称
        会按照驼峰命名法的规则生成属性名称
        自己设计数据表的时候,多个单词之前使用下划线分隔
    
      --
    
      !--
        resultMap的作用
        1. 当数据库中的字段名称和实体类对象的属性名不一致,可以进行转换
        2. 当前查询的结果对象没有对应一个表时,可以自定义一个结果集
      --
      resultMap id="BaseResultMap" type="com.md.springboot.model.Student"
        !--
          id标签只能修饰主键字段,result标签修饰其他字段
          column 数据库中的字段名称
          property 映射对象的属性名称
          jdbcType 对应的类型
        --
        id column="id" jdbcType="INTEGER" property="id" /
        result column="name" jdbcType="VARCHAR" property="name" /
        result column="age" jdbcType="INTEGER" property="age" /
      /resultMap
    
    
      !--sql语句片段,将公共部分抽出--
      sql id="Base_Column_List"
        id, name, age
      /sql
    
    
    
    
      select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"
        select 
        include refid="Base_Column_List" /
        from t_student
        where id = #{id,jdbcType=INTEGER}
      /select
    
      delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"
        delete from t_student
        where id = #{id,jdbcType=INTEGER}
      /delete
    
      insert id="insert" parameterType="com.md.springboot.model.Student"
        insert into t_student (id, name, age
          )
        values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
          )
      /insert
    
    
      !--动态sql--
      insert id="insertSelective" parameterType="com.md.springboot.model.Student"
        insert into t_student
        trim prefix="(" suffix=")" suffixOverrides=","
          if test="id != null"
            id,
          /if
          if test="name != null"
            name,
          /if
          if test="age != null"
            age,
          /if
        /trim
        trim prefix="values (" suffix=")" suffixOverrides=","
          if test="id != null"
            #{id,jdbcType=INTEGER},
          /if
          if test="name != null"
            #{name,jdbcType=VARCHAR},
          /if
          if test="age != null"
            #{age,jdbcType=INTEGER},
          /if
        /trim
      /insert
    
    
      update id="updateByPrimaryKeySelective" parameterType="com.md.springboot.model.Student"
        update t_student
        set
          if test="name != null"
            name = #{name,jdbcType=VARCHAR},
          /if
          if test="age != null"
            age = #{age,jdbcType=INTEGER},
          /if
        /set
        where id = #{id,jdbcType=INTEGER}
      /update
    
      update id="updateByPrimaryKey" parameterType="com.md.springboot.model.Student"
        update t_student
        set name = #{name,jdbcType=VARCHAR},
          age = #{age,jdbcType=INTEGER}
        where id = #{id,jdbcType=INTEGER}
      /update
    /mapper
    

    END

    推荐好文

    强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

    为什么MySQL不推荐使用uuid或者雪花id作为主键?

    为什么建议大家使用 Linux 开发?爽(外加七个感叹号)

    IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

    炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)

    记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

    十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)

    在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

    原文始发于微信公众号(Java笔记虾):在IDEA里搞Spring Boot Mybatis反向工程,太方便了~

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> 在IDEA里搞Spring Boot Mybatis反向工程,太方便了~


     上一篇
    类和对象在JVM中是如何存储的,竟然有一半人回答不上来! 类和对象在JVM中是如何存储的,竟然有一半人回答不上来!
    前言这篇博客主要来说说类与对象在JVM中是如何存储的,由于JVM是个非常庞大的课题,所以我会把他分成很多章节来细细阐述,具体的数量还没有决定,当然这不重要,重点在于是否可以在文章中学到东西,是否对JVM可以有一些更深的理解,当然这也
    下一篇 
    后端生成Token架构与设计详解 后端生成Token架构与设计详解
    作者:巨人大哥 cnblogs.com/jurendage/p/9219041.html 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源