当前位置: 首页 > news >正文

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【四】

文章目录

  • SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--基础环境搭建【四】
    • 项目介绍
      • 项目功能/界面
        • ● SSM 整合项目界面
      • 创建表,使用逆向工程生成Bean、XxxMapper 和XxxMapper.xml
        • 1. 创建furns_ssm 数据库和furns 表
        • 使用MyBatis Generator 逆向工程生成bean mapper 接口和mapper.xml
        • 引入MyBatis Generator 包, 在pom.xml 配置
        • 创建furns_ssm\mbg.xml
        • 创建文件\test\MBGTest.java
        • 使用Junit 测试Spring 和MyBatis 是否整合成功, 能通过MyBatis 添加furn 到数据库
      • 注意事项和细节说明
        • insertSelective 和insert 的区别

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)–基础环境搭建【四】

项目介绍

项目功能/界面

● SSM 整合项目界面

image-20230802214015021

创建表,使用逆向工程生成Bean、XxxMapper 和XxxMapper.xml

1. 创建furns_ssm 数据库和furns 表

-- 创建furns_ssm
DROP DATABASE IF EXISTS furns_ssm;
CREATE DATABASE furns_ssm;
USE furns_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 ## 照片路径
);

使用MyBatis Generator 逆向工程生成bean mapper 接口和mapper.xml

当然也可以自己写,如果在开发中, 逆向工程生成的代码, 不能满足需要,再自己编写.

<!-- 修改mybatis-config.xml , 增加typeAliases 配置.-->
<configuration>
<!--
1. 如果一个包下有很多的类,我们可以直接引入包
2. 这样该包下面的所有类名,可以直接使用
-->
<typeAliases><package name="com.nlc.furns.bean"/>
</typeAliases>
</configuration>

引入MyBatis Generator 包, 在pom.xml 配置

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

创建furns_ssm\mbg.xml

参考文档https://mybatis.org/generator/ 进行配置, 这里给出了一个模板xml ,在上面修改即可

image-20230731202732265

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//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:3306/furns_ssm?characterEncoding=utf8"userId="root"//password="自己的密码">注意记得把//删掉然后写自己的密码和端口</jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--        指定javaBean生成的位置--><javaModelGenerator targetPackage="com.nlc.furn.bean" targetProject=".\src\main\java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!--        指定sql映射文件生成的位置1. 要根据自己的实际情况指定--><sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--        指定dao接口生成的位置, 也就是mapper接口--><javaClientGenerator type="XMLMAPPER" targetPackage="com.nlc.furn.dao" targetProject=".\src\main\java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--        指定要逆向生成的表和生成策略--><table tableName="furn" domainObjectName="Furn"></table></context>
</generatorConfiguration>

创建文件\test\MBGTest.java

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

在这里插入图片描述

public class MBGTest {@Testpublic void generator() throws Exception {List<String> warnings = new ArrayList<String>();boolean overwrite = true;//这里要指定你自己配置的mbg.xml//如果这样访问,需要将文件放在项目下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");}
}

使用Junit 测试Spring 和MyBatis 是否整合成功, 能通过MyBatis 添加furn 到数据库

  1. 修改bean: Furn.java
    image-20230731203225196

创建furns_ssm\src\test\java\com\nlc\furns\dao\FurnMapperTest.java完成对furn 表的crud 测试操作

public class FurnMapperTest {@Testpublic void insertSelective() {//1. 获取到容器ApplicationContext ioc =new ClassPathXmlApplicationContext("applicationContext.xml");//2获取FurnMapperFurnMapper furnMapper = ioc.getBean(FurnMapper.class);//System.out.println("furnMapper--" + furnMapper.getClass());//3.添加数据Furn furn =new Furn(null, "北欧风格沙发~~", "与之家~~", new BigDecimal(180), 666,70, "assets/images/product-image/1.jpg");int affected = furnMapper.insertSelective(furn);System.out.println("affected--" + affected);System.out.println("操作成功~");}@Testpublic void deleteByPrimaryKey() {//1. 获取到容器ApplicationContext ioc =new ClassPathXmlApplicationContext("applicationContext.xml");//2获取FurnMapperFurnMapper furnMapper = ioc.getBean(FurnMapper.class);int affected = furnMapper.deleteByPrimaryKey(6);System.out.println("affected--" + affected);System.out.println("操作成功");}@Testpublic void updateByPrimaryKey() {//1. 获取到容器ApplicationContext ioc =new ClassPathXmlApplicationContext("applicationContext.xml");//2获取FurnMapperFurnMapper furnMapper = ioc.getBean(FurnMapper.class);Furn furn = new Furn();furn.setId(5);furn.setName("风格家居-小沙发");//会修改所有的字段,如果没有设置字段对应的属性值,那么默认是null//int affected = furnMapper.updateByPrimaryKey(furn);//根据你设置属性对应字段,生成sql语句int affected = furnMapper.updateByPrimaryKeySelective(furn);System.out.println("affected--" + affected);System.out.println("操作成功~");}@Testpublic void selectByPrimaryKey() {//1. 获取到容器ApplicationContext ioc =new ClassPathXmlApplicationContext("applicationContext.xml");//2获取FurnMapperFurnMapper furnMapper = ioc.getBean(FurnMapper.class);Furn furn = furnMapper.selectByPrimaryKey(1);System.out.println("furn--" + furn);System.out.println("操作成功~");}
}

注意事项和细节说明

insertSelective 和insert 的区别

  1. insertSelective–选择性保存数据;
    比如User 里面有三个字段:id,name,age,password
    但是只设置了一个字段;
    User u=new user();
    u.setName(“张三”);
    insertSelective(u);

  2. insertSelective 执行对应的sql 语句的时候,只插入对应的name 字段;(主键是自动添加的,默认插入为空)

    insert into tb_user (id,name) value (null,“张三”);

  1. 而insert 则是不论设置多少个字段,统一都要添加一遍,不论你设置几个字段,即使是一个
    User u=new user();
    u.setName(“张三”);
    insert(u);
    insert into tb_user (id,name,age,password) value (null,“张三”,null,null)

相关文章:

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【四】

文章目录 SSM(Vue3ElementPlusAxiosSSM前后端分离)--基础环境搭建【四】项目介绍项目功能/界面● SSM 整合项目界面 创建表&#xff0c;使用逆向工程生成Bean、XxxMapper 和XxxMapper.xml1. 创建furns_ssm 数据库和furns 表使用MyBatis Generator 逆向工程生成bean mapper 接口…...

iPhone 8 Plus透明屏应用范围详解

iPhone 8 Plus是苹果公司于2017年推出的一款智能手机&#xff0c;它采用了全新的玻璃机身设计&#xff0c;支持无线充电&#xff0c;并且搭载了更强大的A11仿生芯片。 而透明屏则是一种新型的屏幕技术&#xff0c;可以使手机屏幕呈现出透明的效果。 透明屏是一种将屏幕背后的元…...

【前端面试手撕题】instanceof、Array.map、Array.filter、Array.reduce、_objectCreate

FED6 instanceof 描述 请补全JavaScript代码&#xff0c;要求以Boolean的形式返回第一个实例参数是否在第二个函数参数的原型链上。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><style>/* 填写样式 */</style> </h…...

8.物联网操作系统之事件标志组

。事件标志组定义 FreeRTOS事件标志组介绍 FreeRTOS事件标志组工作原理 一。事件标志组定义 信号量信号量只能实现任务与单个事件或任务间的同步。但是某些任务可能会需要与多个事件或任务进行同步&#xff0c;此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与…...

[腾讯云Cloud Studio实战训练营]无门槛使用GPT+Cloud Studio辅助编程完成Excel自动工资结算

目录 前言一、Cloud Studio产品介绍1.1 注册Cloud Studio 二、项目实验2.1 选择合适的开发环境2.2 实验项目介绍2.3 实验步骤三、总结 前言 chatgpt简单介绍: ChatGPT是一种基于GPT的自然语言处理模型&#xff0c;专门用于生成对话式文本。它是OpenAI于2021年发布的&#xff0…...

局域网ssh登录windows自带Linux系统(WSL)踩坑记录

局域网ssh登录windows自带Linux系统&#xff08;WSL&#xff09;踩坑记录 系统和工具安装查看IPLinux用户和端口设置Windows ssh 登录Mac ssh 登录 系统和工具安装 先按照网上的教程安装好Linux系统&#xff08;一般都是安装Ubuntu&#xff09;&#xff0c;安装好ssh等工具&am…...

2023-02-03——2023-08-03,半年以来与客服交流的记录【CSND 文章撰写 网站使用求解】客服咨询交流记录(长期更新ing)

这世界上久处不厌,都是因为用心。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主🏅 🏆...

DCL 操作

文章目录 1.新建用户2.删除用户3.用户授权4.撤销用户权限5.查看用户权限6.修改用户密码 1.新建用户 # 命令格式 CREATE USER [username][host] identified by [password];# 示例 CREATE USER lvlvlocalhost identified by lvlv; CREATE USER lvlv192.168.1.1 identified by lv…...

C++11移动构造函数详解

C11移动构造函数详解 拷贝构造函数修改后的拷贝构造函数移动构造函数移动构造函数的优点 当类中同时包含拷贝构造函数和移动构造函数时&#xff0c;如果使用临时对象初始化当前类的对象&#xff0c;编译器会优先调用移动构造函数来完成此操作。只有当类中没有合适的移动构造函数…...

【力扣】19. 删除链表的倒数第 N 个结点 <链表指针、快慢指针>

【力扣】19. 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n…...

Vue3和typeScript路由传参

1 params传的参数&#xff0c;页面刷新就消失,而query传的参数&#xff0c;页面刷新还会存在&#xff0c;所以通常用query。 query传参 跳转页面&#xff1a;拿到router对象,调用push方法做跳转. import { useRoute,useRouter} from "vue-router"; export default…...

SQLserver数据库巡检脚本

SQL Server数据库巡检脚本的示例&#xff1a; #!/bin/bash# 设置SQL Server登录凭证 SQL_USER"your_username" SQL_PASSWORD"your_password"# 设置巡检结果输出文件路径 OUTPUT_FILE"/path/to/output.log"# 获取SQL Server版本信息 sql_version…...

Go Ethereum源码学习笔记 001 Geth Start

Go Ethereum源码学习笔记 前言[Chapter_001] 万物的起点: Geth Start什么是 geth&#xff1f;go-ethereum Codebase 结构 Geth Start前奏: Geth Consolegeth 节点是如何启动的NodeNode的关闭 Ethereum Backend附录 前言 首先读者需要具备Go语言基础&#xff0c;至少要通关菜鸟…...

idea如何加快创建Maven项目的速度

一、下载archetype-catalog.xml 下载archetype-catalog.xml的地址 二、配置 以下所说的配置都指全局配置。 配置Maven -DarchetypeCataloglocal -Dfile.encodinggbk...

软件外包开发的GO开发框架

近些年GO语言使用的越来越多&#xff0c;尤其是在web应用开发和高性能服务器的项目里。在开发新项目时掌握一些常用的开发框架可以节省开发时间提高工作效率&#xff0c;也是对软件开发人员基本的技能要求。今天和大家分享一些常见的GO语言开发框架&#xff0c;希望对大家有所帮…...

oracle会话打满

1.查看当前连接情况 col machine for a20 col program for a40 col sql_id for a20 set linesize 300 set pagesize 300 select machine,program,sql_id,count(1) from v$session group by machine,program,sql_id order by 4 desc;MACHINE PROGRAM SQL_ID …...

VSCode自定义闪烁光标

打开VSCode 组合键ctrlshiftp搜索"settings.json",打开User Settings 加上这一句 "editor.cursorStyle": "block","workbench.colorCustomizations": {"editorCursor.foreground": "#5c8fb1","terminalCurs…...

复亚智能打造全新云平台:让无人机任务管理更智能、更简单

复亚智能全新升级的MindView云平台&#xff0c;对航线规划、任务管理、自动飞行、数据管理等各个环节开展可视化、数字化、智能化监管&#xff0c;从任务到结果的“看得清”、“管得住”、“查得准”&#xff0c;带来更轻松的操作&#xff0c;改善作业效率、安全保障和用户体验…...

编程导航第六关——白银挑战

编程导航第六关——白银挑战 树的层次遍历 LeetCode102 题目要求&#xff1a;给你一个二叉树&#xff0c;请你返回其按层序遍历得到的节点值。(即逐层地&#xff0c;从左到右访问所有节点)。思路&#xff1a; 我们根据队列的特点&#xff0c;先进先出&#xff1b;要实现全部节…...

743. 网络延迟时间

有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 ui 是源节点&#xff0c;vi 是目标节点&#xff0c; wi 是一个信号从源节点传递到目标节点的时间。 现在&#xff0c;…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...