SSM--mybatis逆向工程生成

news2025/3/12 23:48:56

SSM学习笔记–mybatis逆向工程生成

文章目录

  • SSM学习笔记--mybatis逆向工程生成
    • 1. 创建数据库和表
    • 2. Mybatis Generator 逆向工程

1. 创建数据库和表

-- 创建 furns_ssm
DROP DATABASE IF EXISTS furn_ssm;
CREATE DATABASE furn_ssm;
USE furn_ssm;
 -- 创建家居表
CREATE TABLE furn(
`id` INT(11) PRIMARY KEY AUTO_INCREMENT, ## id
`name` VARCHAR(64) NOT NULL, ## 家居名
`maker` VARCHAR(64) NOT NULL, ## 厂商
`price` DECIMAL(11,2) NOT NULL, ## 价格
`sales` INT(11) NOT NULL, ## 销量
`stock` INT(11) NOT NULL, ## 库存
`img_path` VARCHAR(256) NOT NULL ## 照片路径
);
-- 初始化家居数据
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 北 欧 风 格 小 桌 子 ' , ' 熊 猫 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/1.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 简 约 风 格 小 椅 子 ' , ' 熊 猫 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/2.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 典 雅 风 格 小 台 灯 ' , ' 蚂 蚁 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/3.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 温 馨 风 格 盆 景 架 ' , ' 蚂 蚁 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/4.jpg');
SELECT * FROM furn

2. Mybatis Generator 逆向工程

  1. 使用 MyBatis Generator 逆向工程生成 bean mapper 接口和 mapper.xml , 当然也可以自己写
  2. 建议,如果在开发中,逆向工程生成的代码,不能满足需要,再自己编写

第一步、 修改 mybatis-config.xml , 增加 typeAliases 配置.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--
        1. 如果一个包下有很多的类,我们可以直接引入包
        2. 这样该包下面的所有类名,可以直接使用
    -->
    <typeAliases>
        <package name="com.xjz.furn.bean"/>
    </typeAliases>
</configuration>

第二步、引入 MyBatis Generator 包, 在 pom.xml 配置

<!-- 引入 mybatis 逆向工程依赖包 -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.0</version>
</dependency>

第三步、创建furn-ssm\mbg.xml

  • 参 考 文 档:https://mybatis.org/generator/

注意:这一步是最重要的,这里为大家准备了一个模板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="DB2Tables" targetRuntime="MyBatis3">
        <!-- 生成没有注释的 bean-->
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!-- 配置数据库连接信息-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3308/furn_ssm?characterEncoding=utf8" userId="root" password="123456">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 指定 javaBean 生成的位置-->
        <javaModelGenerator targetPackage="com.xjz.furn.bean"
                            targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 指定 sql 映射文件生成的位置-->
        <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 指定 dao 接口生成的位置, 也就是 mapper 接口-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.xjz.furn.dao"
                             targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 指定要逆向生成的表和生成策略-->
        <table tableName="furn" domainObjectName="Furn"></table>
    </context>
</generatorConfiguration>

第四步、创建测试文件 MGBTest.java

参 考 文 档:https://mybatis.org/generator/

注意:生成相关 bean、mapper 接口和 mapper.xml 参考官方问题来修改, 并完成测试

public class MBGTest {

    @Test
    public void generator() throws Exception {

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定配置文件
        File configFile = new File("mbg.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("逆向生成 OK");

    }
}

第五步、查看测试结果

image-20230410205631903

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js—fs模块

目录 1、什么是fs2、同步和异步调用3、文件写入3.1 writeFile 异步写入3.2 writeFileSync 同步写入3.3 appendFile / appendFileSync 追加写入3.4 createWriteStream 流式写入3.5 写入文件的场景 4、文件读取4.1 readFile 异步读取4.2 readFileSync 同步读取4.3 createReadStre…

C++基础知识总结(详解)

前言 文章篇幅较大&#xff0c;内容充实 请在阅读的过程中保持一个批判的态度 C基础 C头文件 C有自己的头文件&#xff0c;例如iostream 没有.h 也可以用C的头文件 例如stdio.h 有.h 或者将C文件C化 例如cstdio 前面加c没有.h 名字空间 划分逻辑单元。避免名字冲突 创建…

JWT 实现登录认证 + Token 自动续期方案

前言 过去这段时间主要负责了项目中的用户管理模块&#xff0c;用户管理模块会涉及到加密及认证流程。今天就来讲讲认证功能的技术选型及实现。技术上没啥难度当然也没啥挑战&#xff0c;但是对一个原先没写过认证功能的菜鸡来说也是一种锻炼吧。 技术选型 要实现认证功能&a…

【短篇】函数重载

函数重载 重载使用规则 重载 函数重载也是CPP相较于C的一个优化内容。 在C中我们都知道函数名不能重名 当然这个错误对于我还有类似我这种只学过C的人来说&#xff0c;这个错误是显得多么理所当然。 但是在Cpp中&#xff0c;则对这个功能进行了优化 看到这就有人问了&#x…

我去蔚来试驾了

前面写了比亚迪汉、小鹏P7i的试驾体验&#xff0c;链接如下&#xff1a; 小鹏P7I试驾体验&#xff01; 今天接着分享蔚来ET5的试驾体验&#xff0c;实话实说&#xff0c;我是蔚来ET5的颜粉&#xff0c;颜值也是ET5最大的卖点之一。 我身边不少朋友&#xff0c;不管是男生还是女…

windows下使用vite搭建vue开发环境

windows下使用vite搭建vue开发环境 1 下载安装配置NodeJS1.1 下载1.2 安装1.3 配置1.4 npm镜像加速配置1.6 设置环境变量 2 Vite安装 1 下载安装配置NodeJS 1.1 下载 下载地址&#xff1a;https://nodejs.cn/download 到NodeJS官网&#xff0c;选择Windows安装包即可。 1.2…

网络协议-UDP vs TCP, HTTP2.0和3.0

目录 TCP vs UDP Internet协议群&#xff08;TCP/IP协议群&#xff09; 传输层和网络层 User Data Diagram&#xff08;UDP&#xff09; 连接 重发&#xff08;校验&#xff09; UDP不保证顺序 思考&#xff1a;看了上面的几点&#xff0c;UDP没有虚拟连接、不校验数据、…

Vue ElementUI Axios 前后端案例(day01) 之Vue

前言js 问js是什么&#xff0c;他有什么作用&#xff0c;与html和css的区别是什么 JavaScript&#xff08;简称JS&#xff09;是一种脚本语言&#xff0c;用于在网页上实现交互效果、动态效果和动态数据更新等功能。它是一种解释性语言&#xff0c;需要在浏览器中解释和执行。…

【Paper Note】Swin Transformer: Hierarchical ViT using Shifted Windows

Swin Transformer: Hierarchical ViT using Shifted Windows 概述核心思想整体结构名词解释与vit区别 模型处理过程概括Patch EmbeddingBasicLayerPatch MergingSwin Transform BlockWindow AttentionShifted Window Attention小结 模型使用及代码模型使用环境配置SwinT 代码Pa…

跨境卖家都要知道的:对话式销售

买家可以用他们的指纹登录大多数东西&#xff0c;并通过与它交谈来管理他们的日历。这些人不会填写一份表格&#xff0c;如果他们填写的字段越多&#xff0c;表格的长度就会越长。如果他们知道只会受到骚扰&#xff0c;他们当然不会下载某些东西。 相反&#xff0c;他们更喜欢…

[Linux系统]系统安全及应用一

系统安全及应用一、账号安全基本措施1.1系统账号清理1.1.1将非登录用户的shell设为/sbin/nologin1.1.2锁定长期不使用的账号1.1.3删除无用的账号1.1.4锁定账号文件文件chattr1.1.5查看文件校验和md5sum1.2密码安全控制1.2.1设置密码有效期1.3历史命令限制1.3.1 减少记录命令的条…

5GHz无线局域网系统模拟

移动电视双天线分集接收技术 随着DVB-T在手机电视、车载电视、楼宇电视、地铁电视等户外广播领域内的发展&#xff0c;在这些接收范围内&#xff0c;多径衰落、多普勒频移等小范围衰落是不可避免的问题&#xff0c;解决这些衰落和干扰成为倍受关注的问题。为了解决衰落&#x…

rk3568 点亮LCD (BT656 BT1120)

rk3568 适配 BT656/BT1120 BT.656 TX 和 BT.1120 TX&#xff0c;是一种并行输出接口&#xff0c;而 Camera 对应的是 BT.656 RX和 BT.1120 RX&#xff0c;是一种并行输入接口&#xff0c;两则在协议上是一致的。与同为并口的RGB非常像&#xff0c;在rk3568 芯片上RGB和BT656/B…

【jenkins】Jenkins连接 Gitlab实现 push代码自动构建

目录 一、安装插件 二、构建任务 三、为任务配置触发器 四、到gitlab进行设置webhooks 4.1 设置网络 4.2 到jenkins对应项目的源码库 4.3 测试 4.3.1 点击测试--标签推送事件 4.3.2 点击编辑 一、安装插件 持续部署的第一步需要检查是否安装gitlab插件&#xff1a; gitla…

Doris(9):删除数据(Delete)

Delete不同于其他导入方式&#xff0c;它是一个同步过程。和Insert into相似&#xff0c;所有的Delete操作在Doris中是一个独立的导入作业&#xff0c;一般Delete语句需要指定表和分区以及删除的条件来筛选要删除的数据。 Doris 目前可以通过两种方式删除数据&#xff1a; DE…

记录-JavaScript常规加密技术

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 当今Web开发中&#xff0c;数据安全是一个至关重要的问题&#xff0c;为了确保数据的安全性&#xff0c;我们需要使用加密技术。JavaScript作为一种客户端编程语言&#xff0c;可以很好地为数据进行加…

Spring Boot 安全

目录 1.概述 2.token 2.1.理论 2.2.使用 3.JWT 3.1.理论 3.2.使用 4.oauth 5.Spring Security 5.1.概述 5.2.基本认证授权 5.3.加密 1.概述 在后端来说&#xff0c;安全主要就是控制用户访问&#xff0c;让对应权限的用户能访问到对应的资源&#xff0c;主要是两点…

AOP通知中获取数据

AOP通知中获取数据 之前我们写AOP仅仅是在原始方法前后追加一些操作&#xff0c;接下来我们要说说AOP中数据相关的内容&#xff0c;我们将从获取参数、获取返回值和获取异常三个方面来研究切入点的相关信息。 获取切入点方法的参数&#xff1a;所有的通知类型都可以获取参数 …

Vulhub开源漏洞靶场用Java远程访问

事件起因&#xff0c;被迫参加某竞赛&#xff0c;中途发现&#xff0c;全员摸鱼&#xff0c;遂一起摸鱼Vulhub是一个面向大众的开源漏洞靶场&#xff0c;无需docker知识&#xff0c;简单执行一条命令即可编译、运行一个完整的漏洞靶场镜像。 Installation 在Ubuntu 20.04下安…

JVM 垃圾回收详解之内存分配和回收原则+死亡对象判断方法

前言 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时&#xff0c;我们就需要对这些“自动化”的技术实施必要的监控和调节。 堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时&#xff0c;Java 自动内存管理最核…