Java spring SSM框架--mybatis

news2024/11/13 9:54:19

一、介绍

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 mapper
  PUBLIC "-//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 {
    //自动装配
    @Autowired
    private XxxMapper xxxMapper;
    //下面写测试方法:
    //(示例)
    void insertWeiboTest(){
        Weibo weibo = new Weibo();
        weibo.setContent("明天不加班了,哎");
        weibo.setCreated(new Date());
        weibo.setUserId(100L);
       	System.out.println(weiboMapper.insertWeibo(weibo));
    }

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

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

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

相关文章

NLP实战二:Pytorch实现TextRNN文本分类

中文数据集 我从THUCNews中抽取了20万条新闻标题&#xff0c;已上传至github&#xff0c;文本长度在20到30之间。一共10个类别&#xff0c;每类2万条。 类别&#xff1a;财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。 数据集划分&#xff1a; 数据集数据量…

Python 接口自动化测试中的深拷贝与浅拷贝~

前言 在编写接口自动化测试脚本时&#xff0c;我们经常需要复制数据结构来模拟不同的测试场景。Python 提供了两种拷贝机制&#xff1a;浅拷贝和深拷贝。理解这两种拷贝的区别对保证测试数据的一致性和准确性至关重要。 浅拷贝 vs 深拷贝 浅拷贝&#xff1a;只复制引用&#…

软件架构:依赖倒置原则的魅力

依赖倒置原则&#xff08;Dependency Inversion Principle, DIP&#xff09;是面向对象设计的基本原则之一&#xff0c;由罗伯特C马丁&#xff08;Robert C. Martin&#xff09;提出。这一原则旨在降低系统中各个组件之间的耦合度&#xff0c;提高系统的可维护性和可扩展性。 …

四川正信法律:借钱不还报警有没有用

在日常生活中&#xff0c;金钱往来是人际交往中不可或缺的一部分。然而&#xff0c;当借钱不还成为一种普遍现象时&#xff0c;人们往往会感到困惑和无奈。那么&#xff0c;面对借钱不还的情况&#xff0c;报警是否有用呢? 我们要明确一点&#xff0c;借钱不还属于民事纠纷&am…

注意力机制 — 它是什么以及它是如何工作的

一、说明 注意力机制是深度学习领域的一个突破。它们帮助模型专注于数据的重要部分&#xff0c;并提高语言处理和计算机视觉等任务的理解和性能。这篇文章将深入探讨深度学习中注意力的基础知识&#xff0c;并展示其背后的主要思想。 二、注意力机制回顾 在我们谈论注意力之前&…

TcpSocket在切后台后如何保活

1&#xff09;TcpSocket在切后台后如何保活 2&#xff09;Magica Clothes 2插件与Burst编译问题 3&#xff09;粒子拖尾合批失败怎么办 4&#xff09;如何让射线追踪跟随我FPS游戏的十字准星进行移动 这是第398篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&…

适合学生党的运动耳机都有哪些?五大适合学生党的运动耳机推荐

2024年春季&#xff0c;开放式蓝牙耳机就凭借“佩戴舒适、开放安全”等优势火热出圈&#xff0c;这让各大音频厂商更新迭代速度不断加快&#xff0c;新品层出不穷。而用户面对市场上琳琅满目的开放式蓝牙耳机&#xff0c;一时间也不知道如何选择。那么对于学生党来说&#xff0…

linux 基本指令讲解 下

基本指令 date 显示 date 指定格式显示时间:date%Y:%m:%d(冒号可以随便改) 在显示方面 %H : 小时(00..23) %M : 分钟(00..59) %S : 秒(00..61) %X : 相当于 %H:%M:%S %d : 日 (01..31) %m : 月份 (01..12) %Y : 完整年份 (0000..9999) %F : 相当于 %Y-%m-%d在时间设置方面 date…

依赖注入+中央事件总线:Vue 3组件通信新玩法

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线 大家好&#xff0c;依旧青山&#xff0c; 最近呢也随着需求的变更调优…

Prometheus部署和基本操作

1 项目目标 &#xff08;1&#xff09;对Prometheus有基本的了解 &#xff08;2&#xff09;能够部署出一套Prometheus看板系统 &#xff08;3&#xff09;对Prometheus界面熟悉 1.1 规划节点 主机名 主机IP 节点规划 prome-master01 10.0.1.10 服务端 prome-node01 …

java基础学习笔记1

Java编程规范 命名风格 1. 【强制】代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a;_name / __name / $name / name_ / name$ / name__ 2. 【强制】代码中的命名严禁使用拼音与英文混合的方式&#xff0c;更不允许直…

社交媒体分析:如何利用Facebook的数据提升业务决

在数字化时代&#xff0c;社交媒体已经成为企业战略中不可或缺的一部分。Facebook&#xff0c;作为全球最大的社交平台之一&#xff0c;提供了丰富的数据资源&#xff0c;这些数据不仅能够帮助企业了解市场趋势&#xff0c;还能提升业务决策的精准度。本文将探讨如何有效利用Fa…

CV党福音:YOLOv8实现实例分割(一)

前面我们得知YOLOv8不但可以实现目标检测任务&#xff0c;还包揽了分类、分割、姿态估计等计算机视觉任务。在上一篇博文中&#xff0c;博主已经介绍了YOLOv8如何实现分类&#xff0c;在这篇博文里&#xff0c;博主将介绍其如何将实例分割给收入囊中。 YOLOv8实例分割架构图 …

Spring Boot3.3.X整合Mybatis-Plus

前提说明&#xff1a; 项目的springboot版本为&#xff1a;<version>3.3.2</version> 需要整合的mybatis-plus版本&#xff1a;<version>3.5.7</version> 废话不多说&#xff0c;开始造吧 1.准备好数据库和表 2.配置全局文件application.properti…

本地连接服务器redis

详细步骤 1.看一下服务器上redis实例的运行状态&#xff1a; [rootiZuf67k70ucx14s6zcv54dZ var]# ps aux | grep redis-server若显示&#xff1a; 则说明服务器上的redis已经启动了&#xff0c;若没有&#xff0c;则请重启一下&#xff1a; sudo systemctl restart redis…

原来,考证还可以领取补贴Money

武汉ZF真的对打工人太好了&#xff0c;只要社保交满 12 个月就可以参加职业技能考试&#xff0c;考试通过就能领 2K 的补贴。 而且证考了对找工作工资也能比别人高几百&#xff0c;真的太爽了&#xff0c;有空的姐妹都去给我考&#xff01;&#xff01;&#xff01; 没空的也给…

思科三层交换机实现EIGIP路由协议6

#路由协议实现# #任务六三层交换机实现EIGIP路由协议6# #1配置计算机的IP地址、子网掩码和网关 #2配置Switch-A的名称及其接口IP地址 Switch(config)#hostname Switch-A Switch-A(config)#ip routing Switch-A(config)#int g0/1 Switch-A(config-if)#no switchport Switc…

docker pull实现断点续传

问题背景 在使用Docker拉取DockerHub的镜像时&#xff0c;经常会出现网络不稳定的问题&#xff0c;这就导致拉取到一半的镜像会重新拉取&#xff0c;浪费时间。例如下面这种情况&#xff1a; 第二次拉取 这是一个网络中断的场景&#xff0c;第二次重新拉取的时候&#xff0c;同…

电子元件-潮湿敏感度MSL等级

目录&#xff1a; 1、什么是MSL 2、MSL测定的流程 3、MSL的分类★ 4、其他 1、什么是MSL MSL&#xff1a;MSL 是 Moisture Sensitivity Level 的缩写&#xff0c;是湿气敏感性等级的意思。 MSL 的提出就是为了给湿度敏感性 SMD 元件的封装提供一种分类标准&#xff0c;从而…

UE虚幻引擎可以云渲染吗?应用趋势与挑战了解

虚幻云渲染技术是基于虚幻引擎的云端渲染技术&#xff0c;将虚幻引擎的渲染计算任务通过云计算的方式进行处理和渲染、并将渲染结果传输到终端设备上进行展示。虚幻引擎云渲染技术在近年来得到了迅猛的发展&#xff0c;并在各个领域得到了广泛的应用&#xff0c;包括游戏、电影…