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

Java spring SSM框架--mybatis

一、介绍

Spring 框架是一个资源整合的框架,可以整合一切可以整合的资源(Spring 自身和第三方),是一个庞大的生态,包含很多子框架:Spring Framework、Spring Boot、Spring Data、Spring Cloud…… 其中Spring Framework是核心。
在这里插入图片描述

SSM框架

  • Spring Framework框架
  • Spring MVC框架
  • Mybatis框架

1.Spring Framework

包含三个子框架:IoC(控制反转),AoP(面向切面编程),Spring MVC子框架
java对象和Spring Bean 对象是一样的,只是创建的人不一样

1.1 IoC

1)IoC是控制反转的思想,反转资源的获取方向
将对象的创建和管理交给框架完成,将程序员解放出来

2)实现:通过IoC容器和DI依赖注入,其中IoC容器的实现是由ApplicationContext接口实现,这个接口可以是AnnocationConfigApplicationContext 和 ClasspathXmlApplicationContext来实现
IoC容器的创建:
通过注解的方式和xml文件配置的方式进行实现

3)常用注解:(自动创建Bean对象)
类上:
①@Component
表示未分层
②@Controller
表示在控制层,负责接受请求和返回响应
③@Service
表示在业务层,负责业务逻辑处理
④@Repository
表示在数据访问层,负责数据库的交互

1.2DI依赖注入注解

① @Value(“注入值”)
属性,set方法上
②@Autowired
属性、set方法、构造方法上
对象类型或接口类型依赖注入
③@Qualifier(value=“对象名”)
根据Bean对象的名称进行注入,一个接口多个实现类时使用

面试题:
@Autowired注解和@Resource的区别

  • 前者是Spring Framework的注解,后者则是JDK的标准注解

  • @Autowired注解只能根据类型装配,一个接口多个实现类时需要结合Qualifier进行装配

  • @Resource注解如果制定了name参数,参数和Bean对象名一致,则根据name对应的Bean对象名进行装配;不一致则根据类型装配

  • @Resource未指定name参数,则把属性名作为Bean对象名称进行装配

2.Bean对象生命周期

2.1生命周期

1)实例化,通过构造方法实现
2)属性赋值,set方法实现
3)初始化,@PostConstruct注解执行初始化的方法
4)使用 context.getBean(类名.class)
5) 销毁,@PreDestroy注解执行销毁之前的方法

2.2 引入外部属性文件

1)创建配置文件,放在resources目录下,.yml、.properties、.yaml结尾
2)通过@PropertySource(“配置文件路径”)引入
3)$(配置名称)获取具体配置

2.3 自动扫描

工程中配置文件层config的配置文件SpringConfig

/**Configuration注解:表示当前类为配置类,Spring自动加载ComponentScan注解:自动扫描注解,该包以及子孙包中的所有的类,为其创建Bean对象MappingScan注解,自动扫描,为该包里的所有接口自动加上@Mapping注解并实例化**/
@Configuration
@ComponentScan("扫描指定包的路径")
@MappingScan("扫描指定包的路径")
public class SpringConfig{
}

3.Mybatis框架

是一个开源的数据持久层框架,java对象与关系型数据库之间进行映射的方式,可以用xml配置文件或注解方式进行sql映射

3.1ORM

对象关系映射,用于将对象模型与关系型数据库之间进行映射

Java数据库
一个类一张表
一个类属性一个表字段
一个对象一条表记录

Java中的属性数量和类型一定要对应数据库中的字段和类型,名字可以不一致

3.2流程
  1. 创建工程,勾选mybatis、mysql,lombok依赖
    在这里插入图片描述

在这里插入图片描述

  1. 配置数据库连接信息application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/库名?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root
  1. 创建实体类pojo.entity.类名
//对应数据表中的属性
@Data  //包含了构造方法、重写toString、get、set方法
public class Weibo {private Long id;private String content;private Date created;private Long userId;
}
  1. 创建接口和接口方法 mapper.xxxMapper
@Mapper
public interface XxxMapper {int insertUser(User user);
}
  1. 创建mapper映射文件 xxxMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
<insert id="对应的mapper方法名">
(增)sql语句
</insert>
<select id=".." resulttype="结果返回的实体类目录(可以是entity、vo、dto)">
查询sql语句
</select>
......
</mapper>
  1. 测试
@SpringBootTest
public class WeiboTests {//自动装配@Autowiredprivate XxxMapper xxxMapper;//下面写测试方法://(示例)void insertWeiboTest(){Weibo weibo = new Weibo();weibo.setContent("明天不加班了,哎");weibo.setCreated(new Date());weibo.setUserId(100L);System.out.println(weiboMapper.insertWeibo(weibo));}

运行测试方法查看数据表中是否修改了

相关文章:

Java spring SSM框架--mybatis

一、介绍 Spring 框架是一个资源整合的框架&#xff0c;可以整合一切可以整合的资源&#xff08;Spring 自身和第三方&#xff09;&#xff0c;是一个庞大的生态&#xff0c;包含很多子框架&#xff1a;Spring Framework、Spring Boot、Spring Data、Spring Cloud…… 其中Spr…...

Python知识点:如何使用Arduino与Python进行物联网项目

Arduino和Python是物联网(IoT)项目中常用的两种技术。Arduino是一个开源的硬件平台&#xff0c;而Python是一种高级编程语言&#xff0c;它们可以结合使用来创建各种智能设备和系统。以下是使用Arduino和Python进行物联网项目的一般步骤&#xff1a; 确定项目需求&#xff1a; …...

论文复现_从 CONAN 中收集 TPL 数据集

1. 概述 CONAN&#xff1a;Conan是一个用于C项目的开源包管理工具。 它的主要目标是简化C项目的依赖关系管理过程&#xff0c;使开发人员能够更轻松地集成、构建和分享C库。 其中有一些比较独特的功能&#xff0c;例如&#xff1a;版本管理、第三方库管理等。 TPL 数据集&…...

使用Docker将Java项目打包并部署到CentOS服务器的详细教程。

当然&#xff0c;让我们将上述步骤进一步细化&#xff0c;以便更好地理解整个过程。 前提条件 一个Java项目CentOS服务器&#xff0c;并且已安装DockerJava项目可以正常在本地运行具有服务器访问权限 ———————————————————————————————————…...

嘉立创eda布线宽度

https://prodocs.lceda.cn/cn/pcb/route-routing-width/#%E5%B8%83%E7%BA%BF%E5%AE%BD%E5%BA%A6...

硬件面试经典 100 题(31~50 题)

31、多级放大电路的级间耦合方式有哪几种&#xff1f;哪种耦合方式的电路零点偏移最严重&#xff1f;哪种耦合方式可以实现阻抗变换&#xff1f; 有三种耦合方式&#xff1a;直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重&#xff0c;变压器耦合的电路可以实现…...

5G:下一代无线通信技术的全面解析

随着科技的不断进步&#xff0c;移动通信技术也在飞速发展。从2G到4G&#xff0c;我们见证了无线网络的巨大变革&#xff0c;而现在&#xff0c;5G已经悄然来临。作为下一代无线通信技术&#xff0c;5G不仅将带来更快的速度和更低的延迟&#xff0c;还将开启全新的应用场景和商…...

关于refresh_token

前文介绍过jwt的一般使用场景&#xff0c;用户登录成功后获得jwt&#xff0c;其中包含用户相关信息&#xff0c;主要是在前端要用到的属性&#xff08;比如姓名、应用角色[这个前端后都用得着]等&#xff09;、在后端要用到的属性&#xff08;比如登录IP、终端唯一标识&#xf…...

Linux网络:基于OS的网络架构

Linux网络&#xff1a;OS视角下的网络架构 网络分层模型OSI 七层模型TCP/IP 五层模型 协议操作系统与网络网络相关命令ifconfigpingnetstat 本博客将基于操作系统&#xff0c;讲解计算机网络的设计理念&#xff0c;帮助大家理解操作系统与网络之间的关系。 网络分层模型 网络…...

UEC++学习(十六)变量添加中文注释、ui设置中文文本

&#xff08;一&#xff09;变量添加中文注释 在C 项目中创建变量&#xff0c;并在蓝图中显示变量的英文名同时附带中文注释&#xff0c;可以使用UPROPERTY 的 ToolTip 元数据属性来实现 UPROPERTY(EditAnywhere, meta (ToolTip "弹夹最大容量"))int32 MagCapacit…...

Redis延迟双删

1、何为延时双删 Redis延迟双删是一种在数据更新操作中确保缓存与数据库数据一致性的策略&#xff0c;通过两次缓存删除操作间隔一段延时来减少数据不一致的问题。 在并发环境下&#xff0c;多个请求同时对同一数据进行读写时&#xff0c;如果没有妥善处理&#xff0c;很容易…...

WO Mic 手机变身免费麦克风

目录 一、主要特点 1.支持多种连接方式 2.应用广泛 3.低延迟 4.简易配置 5.自动连接 6.音频格式 二、软件下载 三、软件安装 四、系统连接 五、测试 直播的时候,上课的时候,会议的时候……突然发现没有麦克风或者电脑麦克风有故障,这可怎么办呢?今天给大家介绍一…...

MQ死信对列

面试题&#xff1a;你们是如何保证消息不丢失的&#xff1f; 1、什么是死信 死信就是消息在特定场景下的一种表现形式&#xff0c;这些场景包括&#xff1a; 1. 消息被拒绝访问&#xff0c;即消费者返回 basicNack 的信号时 或者拒绝basicReject 2. 消费者发生异常&#xff0…...

springboot乡镇小区管理系统-计算机毕业设计源码73685

摘 要 过去使用手工的管理方式对乡镇小区进行管理&#xff0c;造成了管理繁琐、难以维护等问题&#xff0c;如今使用计算机对停车场停车的各项基本信息进行管理&#xff0c;比起手工管理来说既方便又简单&#xff0c;而且具有易于管理、搜索速度快、存储量大等多个优点。将其使…...

基于vue框架的4S店汽车维修保养管理系统28a7y(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;客户,技师,车辆信息,财务,客户维修,维修分配,维修订单,保养预约,保养分配,保养订单,维修费用,保养费用 开题报告内容 基于Vue框架的4S店汽车维修保养管理系统 开题报告 一、项目背景与意义 随着汽车产业的迅猛发展&#xff0c;4S店作…...

小米开放式耳机值得买吗?南卡、小米、漫步者一周横评

​大家好&#xff0c;最近对开放式耳机比较感兴趣&#xff0c;作为一名数码博主以及多年的耳机发烧友&#xff0c;今天想给大家测评一下开放式耳机&#xff0c;这类耳机目前在数码圈非常火热&#xff01;很多喜欢运动的小伙伴都选择了这款耳机&#xff0c;搭配运动场景听歌&…...

解决oracel锁表问题;SQL 错误 [54] [61000]: ORA-00054: 资源正忙

问题描述&#xff1b; SQL 错误 [54] [61000]: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 select session_id from v$locked_object;查看这些 session_id 对应的会话的详细信息&#xff0c;包括用户名、机器名、程序等&#xff0c;9596等是select se…...

Jfinal与hibernate-validator实现后台表单

一. pom.xml配置 jfianl maven项目基础上增加 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate-validator.version}</version></dependency><dependency…...

ansible playbook使用jinja2语法渲染inventory下的主机名和IP到/etc/hosts

1. ansible inventory 下面的 hosts内容如下&#xff1a; [all_host] app1 ansible_host10.2.162.147 app2 ansible_host10.2.162.148 app3 ansible_host10.2.162.149 app4 ansible_host10.2.162.150 app5 ansible_host10.2.162.151[nginx] app12. hosts.j2内容如下 127.0.0…...

张飞硬件1~9电阻篇笔记

电阻有标定值和实际值&#xff0c;关于误差的问题&#xff1a; 精密的电流、电压采样可能会用到1%的精度。如果只是做限流用途的话&#xff0c;用5%就足够。 电阻功率&#xff1a;标定值、额定值、瞬态值&#xff1a; 标定值由封装所决定&#xff0c;例如5W额定值由电路中平…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...