重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

  • 4、数据访问
    • 4.1 整合 ssm

4、数据访问

4.1 整合 ssm


  • 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.zhong</groupId><artifactId>boot3-05-ssm</artifactId><version>0.0.1-SNAPSHOT</version><name>boot3-05-ssm</name><description>boot3-05-ssm</description><properties><java.version>17</java.version></properties><dependencies><!--SpringBoot Web 启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--MySQL 驱动--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><!--MyBatis 依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><!--类注解插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
  • application.properties
# 1、MySQL相关配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456# 2、整合 MyBatis
# mybatis.config-location 告诉 MyBatis 每个接口的 xml 在哪里
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
  • 准备数据库
CREATE TABLE `t_user`
(`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号',`login_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户名称' COLLATE 'utf8_general_ci',	 `nick_name`  VARCHAR(200) NULL DEFAULT NULL COMMENT '用户昵称' COLLATE 'utf8_general_ci',	 `password`   VARCHAR(200) NULL DEFAULT NULL COMMENT '用户密码' COLLATE 'utf8_general_ci',PRIMARY KEY (`id`)	 
);
insert into t_user(login_name,nick_name,password) values ('xiaozhong','小钟','123456');
insert into t_user(login_name,nick_name,password) values ('xiaowang','小王','123456');

image-20240602173643355

  • 运行成功后请刷新数据库

image-20240602173719691

  • 添加 Tuser 实体类映射数据库字段
package com.zhong.ssm.bean;import lombok.Data;/*** @ClassName : Tuser* @Description :* @Author : zhx* @Date: 2024-06-02 17:40*/
@Data
public class TUser {private Long id;private String loginName;private String nickName;private String password;
}
  • 安装插件 MyBatisX

image-20240602174901680

  • 写 UserMapper 接口
package com.zhong.ssm.bean.mapper;/*** @ClassName : UserMapper* @Description :* @Author : zhx* @Date: 2024-06-02 17:47*/
public interface UserMapper {}
  • 按键盘 Alt + Enter 选择 [MybatisX] Generate of xml 选择当前项目的 resource 目录下的 mapper 文件夹 点击确定

image-20240602175001019

image-20240602175233090

  • 自动生成了对应的 xml 文件

image-20240602175348116

  • 快速生成:新建方法 getUserById 按键盘 Alt + Enter 直接回车

package com.zhong.ssm.bean.mapper;import com.zhong.ssm.bean.TUser;
import org.apache.ibatis.annotations.Param;/*** @ClassName : UserMapper* @Description :* @Author : zhx* @Date: 2024-06-02 17:47*/
public interface UserMapper {/*** 1、每个方法都在 mapper 文件有一个 sql 标签对应的* 2、所有参数都应该用 @Param(name) 进行签名 SQL 中才可用 #{name} 取值* @param id* @return*/TUser getUserById(@Param("id") Long id);
}

image-20240602190036137

  • 添加查询语句
<?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.zhong.ssm.bean.mapper.UserMapper"><select id="getUserById" resultType="com.zhong.ssm.bean.TUser">select * from t_user where id=#{id}</select>
</mapper>
  • 添加包扫描路径
package com.zhong.ssm;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@MapperScan(basePackages = "com.zhong.ssm.bean.mapper")
@SpringBootApplication
public class Boot305SsmApplication {public static void main(String[] args) {SpringApplication.run(Boot305SsmApplication.class, args);}}
  • 添加 controller
package com.zhong.ssm.controller;import com.zhong.ssm.bean.TUser;
import com.zhong.ssm.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;/*** @ClassName : UserController* @Description :* @Author : zhx* @Date: 2024-06-02 19:15*/
@RestController
public class UserController {@AutowiredUserMapper userMapper;@GetMapping("/user/{id}")public TUser getUser(@PathVariable("id") Long id) {return userMapper.getUserById(id);}
}
  • 浏览器测试
http://localhost:8080/user/1

image-20240603130514316

http://localhost:8080/user/2

image-20240603130540667

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

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

相关文章

指针的认识(指针变量类型意义、指针运算)

目录 一、指针变量类型的意义 a.通过指针的解引用理解类型意义 b.void* 类型指针 c.const修饰的指针变量 c.1 const放在*号左边​编辑 c.2 const放在*号右边 二、指针运算 a.指针-整数 ​编辑 b.指针 - 指针 ​编辑 c.指针的关系运算 一、指针变量类型的意义 指针变…

【Python】pandas的loc使用方法

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 当你处理数…

【学习】软件测试中如何进行Web网页兼容性测试

在数字时代&#xff0c;Web网页作为信息传递和交流的重要平台&#xff0c;其稳定性和用户体验至关重要。如同一位匠人细致打磨他的工艺品&#xff0c;开发者亦需精心测试网页的兼容性&#xff0c;确保其在各种设备和浏览器上的表现无懈可击。今天&#xff0c;我们就来探讨如何对…

SpringBoot+百度地图+Mysql实现中国地图可视化

通过SpringBoot百度地图Mysql实现中国地图可视化 一、申请百度地图的ak值 进入百度开发者平台 编辑以下内容 然后申请成功 二、Springboot写一个接口 确保数据库里有数据 文件目录如下 1、配置application.properties文件 #访问端口号 server.port9090 # 数据库连接信息 spr…

如何高效管理自己的时间,可以从这几个方向着手

如果你是上班族&#xff0c;天选打工人&#xff0c;你的绝大多数时间都属于老板&#xff0c;能够自己支配的时间其实并不多&#xff0c;所以你可能察觉不到时间管理的重要性。 但如果你是自由职业者或者创业者&#xff0c;想要做出点成绩&#xff0c;那你就需要做好时间管理&am…

ImageButton src图片会照成内存泄露吗 会使native内存增加吗?

在Android开发中&#xff0c;ImageButton 是用来显示按钮的视图组件&#xff0c;它通常用于显示图标或图片。对于ImageButton使用的src属性&#xff08;即按钮上的图片&#xff09;通常不会导致内存泄漏&#xff0c;但是有几种情况可能会导致内存问题&#xff1a; 1. **不正确…

NVIDIA发布重磅AI创新,黄仁勋在COMPUTEX大会预示计算未来

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Facebook开户|Facebook广告投放指南

家人们中午好~今天的文章由我们帅气逼人的大帅哥Zoey为大家分享&#xff08;狗头&#xff09;~有想要通过Facebook广告掘金的家人们&#xff01;今天就跟大家分享一下Facebook广告投放的底层逻辑和实用技巧&#xff0c;帮助大家少走弯路&#xff0c;快速入门~ 基础知识&#x…

韶关学院携手泰迪智能科技“见习研学”活动圆满结束

为进一步深化校企合作&#xff0c;落实高校应用型人才培养。5月31日&#xff0c;韶关学院与广东泰迪智能科技股份有限公司联合开展学生企业见习活动。专业教师林思思以及来自韶关学院140名学生参与此次见习活动&#xff0c;泰迪智能科技培训业务部经理钟秋平、校企合作经理吴桂…

easy-es插入大数据报错 Connection is closed

easy-es报错描述 Caused by: java.lang.reflect.InvocationTargetException: nullat sun.reflect.GeneratedMethodAccessor198.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Metho…

kafka,RocketMq,Pulsar对比

1、陆续地在工作中&#xff0c;用到了这三个消息组件&#xff0c;然而原来用过的慢慢就忘记了

网络编程介绍(二)(端口、通信协议)

端口 标记正在计算机设备上运行的应用程序的&#xff0c;被规定为一个 16 位的二进制&#xff0c;范围是 0~65535 。 分类 周知端口&#xff1a; 0~1023 &#xff0c;被预先定义的知名应用占用&#xff08;如&#xff1a; HTTP 占用 80 &#xff0c; FTP 占用 21 &#xff…

Python正则表达式多行匹配:深入探索与实践

Python正则表达式多行匹配&#xff1a;深入探索与实践 在Python编程中&#xff0c;正则表达式是一种强大的文本处理工具&#xff0c;用于匹配和操作复杂的字符串模式。其中&#xff0c;多行匹配是正则表达式应用中的一个重要场景&#xff0c;它允许我们在跨越多行的文本中查找…

git 基于某个提交号更新代码

场景&#xff1a;版本有严重缺陷&#xff0c;需要进行回退&#xff0c;找不到上一次发布的包&#xff0c;又不想进行回退代码进行发布&#xff0c;可以基于上一次发布版本的提交号进行发布。 git 基于某个提交号更新代码 要基于某个特定的提交&#xff08;commit&#xff09;…

Spring异步任务@Async的默认线程池执行器是如何初始化的

Spring异步任务Async的默认线程池执行器&#xff0c;是从哪里来&#xff1f;是如何初始化的&#xff1f; 结论先行 异步任务Async的默认线程池执行器是通过TaskExecutionAutoConfiguration#applicationTaskExecutor自动注入的。 异步任务的线程池执行器是如何初始化的&#…

NextJS延迟加载字体

在定义 font-face 的 CSS 中&#xff0c;如果浏览器解析到该规则&#xff0c;它会立即尝试加载指定的字体文件&#xff0c;而不等待 JavaScript 的执行。这意味着在没有调用 JavaScript&#xff08;如 Font Face Observer&#xff09;之前&#xff0c;浏览器会自动加载 font-fa…

Python攻防入门:揭秘安全与风险之舞

Python攻防入门&#xff1a;揭秘安全与风险之舞 Python&#xff0c;作为一门广泛应用的编程语言&#xff0c;既被无数开发者用于构建各类应用程序&#xff0c;也成为安全领域攻防双方的重要工具。本文将带领读者走进Python攻防的世界&#xff0c;从四个方面、五个方面、六个方…

【Java数据结构】详解Stack与Queue(二)

&#x1f512;文章目录: 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.栈的应用场景 2.1逆序打印链表 2.2逆波兰表达式求值 2.3括号匹配 2.4出栈入栈次序匹配 2.5最小栈 3. 栈 虚拟机栈 栈帧的区别 4.总结 1.❤️❤️前言~&#x1f973…

零基础构建基于LangChain的聊天机器人(6)

之前的文章&#xff1a; 零基础构建基于LangChain的聊天机器人(1)零基础构建基于LangChain的聊天机器人(2)零基础构建基于LangChain的聊天机器人(3)零基础构建基于LangChain的聊天机器人(4)零基础构建基于LangChain的聊天机器人(5) 设计聊天机器人 现在已经了解了业务需求、数…

关于实习中git的使用

小小实习生,给公司共享了代码,但是还没人审核,所以先创一个test分支 git add . git commmit git push --set-upstream origin niutest 先创建这么个测试环境,等到有人审核通过了,再进行合并 公司的git流程大致是: 开发一个新功能 1.建立一个对应的feat-chat 分支 git…