SpringBoot入门实战(第三篇:MyBatis集成配置,自动生成代码配置)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关



📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

SpringBoot入门实战(第三篇:MyBatis集成配置,自动生成代码配置)

SpringBoot入门实战系列篇专栏
SpringBoot入门实战(第一篇:环境准备和项目初始化)
SpringBoot入门实战(第二篇:MySQL集成配置)
SpringBoot入门实战(第三篇:MyBatis集成配置,自动生成代码配置)
SpringBoot入门实战(第四篇:Redis集成配置)
SpringBoot入门实战(第五篇:项目接口-用户管理)
SpringBoot入门实战(第六篇:项目接口-登录)
SpringBoot入门实战(第七篇:项目接口-商品管理)
SpringBoot入门实战(第八篇:项目接口-订单管理)完结篇
SpringBoot入门实战(项目搭建、配置、功能接口实现等一篇通关)


1. 依赖引入

引入相关依赖和插件
依赖部分

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

插件部分

	 <build>
        <finalName>app</finalName>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
<!--                <version>2.3.4.RELEASE</version>-->
            </plugin>

            <!--添加mybatis generator maven插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                    <!--generatorConfig.xml位置-->
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <!--                    如果本来就有mapper、dao文件了就覆盖-->
                    <overwrite>true</overwrite>
                </configuration>

                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <!--此处必须添加mysql驱动包-->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <scope>runtime</scope>
                        <version>8.0.31</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.csv</include>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.json</include>
                    <include>**/*.js</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.csv</include>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.json</include>
                    <include>**/*.js</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

    </build>

引入后完整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.xh</groupId>
    <artifactId>sb_demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
<!--            <version>1.3.2</version>-->
        </dependency>
        



    </dependencies>


    <build>
        <finalName>app</finalName>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
<!--                <version>2.3.4.RELEASE</version>-->
            </plugin>

            <!--添加mybatis generator maven插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                    <!--generatorConfig.xml位置-->
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <!--                    如果本来就有mapper、dao文件了就覆盖-->
                    <overwrite>true</overwrite>
                </configuration>

                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <!--此处必须添加mysql驱动包-->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <scope>runtime</scope>
                        <version>8.0.31</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.csv</include>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.json</include>
                    <include>**/*.js</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.csv</include>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.json</include>
                    <include>**/*.js</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

    </build>


</project>

2. 代码生成配置(generatorConfig.xml)

自动生成代码的配置文件在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>

    <properties resource="jdbc.properties"/>

    <context id="sqlserverTables" targetRuntime="MyBatis3">

        <!-- 生成的pojo,将implements Serializable-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>

        <!--替换默认生成的dao-Example-->
        <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
            <property name="searchString" value="Example$" />
            <property name="replaceString" value="Impl" />
        </plugin>

        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!-- 数据库链接URL、用户名、密码 -->
        <jdbcConnection driverClass="${spring.datasource.driverClassName}"
                        connectionURL="${spring.datasource.url}"
                        userId="${spring.datasource.username}"
                        password="${spring.datasource.password}">
        </jdbcConnection>

        <!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer-->
        <!--true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal-->

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


        <!--生成model模型,对应的包路径,以及文件存放路径(targetProject),targetProject可以指定具体的路径,如./src/main/java,-->
        <!--也可以使用“MAVEN”来自动生成,这样生成的代码会在target/generatord-source目录下-->
        <!--<javaModelGenerator targetPackage="com.joey.mybaties.test.pojo" targetProject="MAVEN">-->
        <!--<javaModelGenerator targetPackage="${daopackage}" targetProject="./src/main/java">-->

        <javaModelGenerator targetPackage="${daopackage}" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
            <!-- 从数据库返回的值被清理前后的空格  -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--对应的mapper.xml文件  -->
        <sqlMapGenerator targetPackage="${daopackage}" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 对应的Mapper接口类文件 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="${daopackage}" targetProject="./src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table tableName="${tableName}"
               enableCountByExample="false"
               enableUpdateByExample="true"
               enableDeleteByExample="true"
               enableSelectByExample="true"
               selectByExampleQueryId="false">
            <property name="useActualColumnNames" value="false"/>
        </table>

    </context>
</generatorConfiguration>

3. 数据库配置文件jdbc.properties

resources包下创建文件jdbc.properties

spring.datasource.driverLocation=mysql-connector-java-8.0.21.jar
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sb_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=1234

daopackage = com.user.dao
tableName = tb_user

其中daopackage是生成代码后存储的位置
tableName是表名

4. 建表

在MySQL表中新建用户表tb_user
建表语句

CREATE TABLE tb_user(
	id INT AUTO_INCREMENT PRIMARY KEY,
	username VARCHAR(255) NOT NULL COMMENT "密码",
	pass_word VARCHAR(255) NOT NULL COMMENT "账号",
	gender VARCHAR(255) NOT NULL COMMENT "性别",
	address VARCHAR(255) NOT NULL COMMENT "地址",
	p_number VARCHAR(255) NOT NULL COMMENT "手机号",
	vip_class INT DEFAULT 0 COMMENT "vip等级,共4级,0-1-2-3"
);

执行后建表完成

5. 生成代码

修改jdbc.properties中的daopackage和tableName,然后到IDEA工具找到Maven工具窗口,一般在右侧
打开sb_demo—Plugins—mybatis-generator—mybatis-generator:generate,如下(双击即可)
在这里插入图片描述

生成成功的控制台界面
在这里插入图片描述

或者在终端窗口(Terminal)使用maven命令

mvn mybatis-generator:generate

在这里插入图片描述

生成的代码文件如下
在这里插入图片描述

6. 添加注解

分别对TbUser.java、TbUserImpl.java、TbUserMapper.interface添加注解
TbUser.java添加@Component注解
在这里插入图片描述

TbUserImpl.java添加@Service注解
在这里插入图片描述

TbUserMapper.interface添加@Mapper注解
在这里插入图片描述

完成以上即可进行数据库表相关操作的代码编写

7. 调用测试

7.1 代码编写:

编写接口进行数据添加
在user包下创建controller包,并在controller包下新建Java代码
代码如下

package com.user.controller;

import com.alibaba.fastjson.JSONObject;
import com.user.dao.TbUser;
import com.user.dao.TbUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @func:
 * @author: LiBai
 * @version: v1.0
 * @createTime: 2025/4/16 15:36
 */
@RestController
@RequestMapping(value = "/xh/v1/user")
public class UserAddTest {

    @Autowired
    TbUserMapper tbUserMapper;
    
    
    @PostMapping(value = "/addUser")
    public JSONObject addUser(@RequestBody JSONObject requestBody){
        System.out.println("add user info ----> ");
        TbUser tbUser = new TbUser();
        tbUser.setUsername(requestBody.getString("username"));
        tbUser.setPassWord(requestBody.getString("passWord"));
        tbUser.setGender(requestBody.getString("gender"));
        tbUser.setAddress(requestBody.getString("address"));
        tbUser.setpNumber(requestBody.getString("pNumber"));
        tbUser.setVipClass(requestBody.getInteger("vipClass"));
        
        tbUserMapper.insert(tbUser);
        
        return requestBody;
    }

}

7.2 接口调用:

postman调用接口
URL地址

127.0.0.1:8088/xh/v1/user/addUser

请求体内容

{
	"username":"libai",
    "passWord":"352894",
    "gender":"男",
    "address":"上海市浦东新区",
    "pNumber":"13122993366",
    "vipClass":2
}

如下(postman中截图)
在这里插入图片描述

7.3 数据查看:

在mysql表中查看数据是否成功添加
在这里插入图片描述

mysql可用,生成代码可用



📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值