⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/m0_37922192/article/details/109248865 「m0_37922192」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

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

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

  • 如果使用 高版本 , 驱动类变为:com.mysql.cj.jdbc.Driver
  • 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:\Java\tool\maven_repository\mysql\mysql-connector-java\5.1.9\mysql-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>
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

此时会报错,如下

这个时候可以不用理会,项目也是会正常运行的,当然也可以这样

添加之后就不会报红了

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

<build>
<plugins>
<!--mybatis 代码自动生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>GeneratorMapper.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>

</build>
1234567891011121314151617

4. 双击生成相关文件

5. 生成的文件

自动生成model/Student、实体类

以及StudentMapper,接口

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

这样方便我们使用,具体的下面详细介绍,注意看注释

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;
}
}
123456789101112131415161718192021222324252627282930313233

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);
}
1234567891011121314151617

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>

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