SSM框架

SSM

  • SSM框架说明
  • SpringBoot
  • MyBatis
    • 整合MyBatis
    • 数据库中表的设计
    • Pojo对象设计
    • Dao接口设计
    • Dao单元方法进行测试
  • XML管理
    • 整合MyBatis框架映射配置文件的位置
    • XML配置SQL标签
      • 常用的SQL标签
  • 动态SQL语句
    • 动态删除数据
    • 动态修改数据

SSM框架说明

  • Spring
    指 Spring Framework,是Spring家族的核心。
  • SpringMVC
    SpringMVC 是 Spring Framework 的核心子项目,提供了一系列功能,使得开发者能够快速开发灵活、易于维护的Web应用程序
  • MyBatis
    MyBatis 是基于 Java 的持久层框架,用于和数据库映射;
    MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作;
    MyBatis 通过注解方式或者xml配置文件的方式来配置SQL和映射关系,灵活性非常高

SpringBoot

Spring Boot是一个Java软件开发框架(脚手架)
SpringBoot核心特性

  • 起步依赖
    创建项目时,会默认添加基础依赖,简化我们自己查找依赖的过程。
  • 嵌入式服务(Tomcat)
    SpringBoot工程支持内嵌的web服务,可以将tomcat这样的服务直接嵌套到web依赖中。

MyBatis

  • Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互;
  • 使用此框架程序员只需要通过注解或者修改xml配置文件的方式配置好需要执行的SQL语句,MyBatis框架会根据SQL语句生成对应的JDBC代码并对数据库中数据进行增删改查操作。
    在这里插入图片描述

整合MyBatis

application.properties配置文件中添加连接数据库信息

spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

数据库中表的设计

Pojo对象设计

Dao接口设计

  • @Mapper注解
    是由MyBatis框架提供,用于描述数据层接口,告诉系统底层为此接口创建其实现类,在实现类中定义数据访问逻辑,执行与数据库的会话(交互)
  • @Insert注解
    使 MyBatis 框架根据接口方法的参数类型自动生成插入数据的代码
  • 占位符 #{}
    #{} 是 MyBatis 框架中用来表示占位符的语法
    在 @Insert 注解中,#{}所代表的是一个占位符,它可以接受 Java 对象作为输入参数,并将其转换为预编译的 SQL 语句中的参数。使用 #{}可以帮助我们避免 SQL 注入等问题,同时也让 SQL 写起来更加简单
  • @Select
  • @Update
  • @Delete

Dao单元方法进行测试

XML管理

xml定义

  • XML是一种可扩展性语言,用户可以自己定义标签,用来描述特定类型的数据;
  • XML的语法严格,每个标签都必须有一个结束标签,标签的嵌套关系也必须合法;

和SQL注解比较

  • xml配置SQL,可以将SQL语句和JAVA代码分离开
  • xml配置SQL,支持动态SQL语句
  • xml配置SQL,支持SQL语句的复用

整合MyBatis框架映射配置文件的位置

application.properties中添加配置:mybatis框架映射配置文件的位置

mybatis.mapper-locations=classpath:mappers/*.xml

XML配置SQL标签

在 Mybatis 的 XML 文件中,SQL 语句都是使用 SQL 标签来定义的

常用的SQL标签

  • select
    用于查询操作,包括多表查询、条件查询等。可以使用 resultType 来指定返回结果的类型。

  • insert
    用于插入操作,并将其自动注入实体类中。

  • update
    用于更新操作,包括更新一条记录或者批量更新。

  • delete
    用于删除操作,包括删除一条记录或者批量删除。

  • if、foreach、set
    用于条件控制,可以根据不同的条件进行查询、插入、更新和删除操作。if 标签用于指定可以为空的查询条件,foreach 标签用于循环查询,set 标签用于指定更新操作的字段值。

  • sql
    用于定义可重用的 SQL 片段,通常是一些较为复杂的 SQL 片段。可以在其它 SQL 语句中使用 include 标签来引用 SQL 片段。

  • include
    用于引入外部的 SQL 片段。可以在 include 标签的 refid 属性中指定外部 SQL 片段的名字,然后在当前 SQL 中使用它。

​ 这些 SQL 标签可以随意组合,可以使 SQL 语句变得很灵活和强大。通常需要根据实际业务场景选择合适的标签来实现相应的 SQL 操作。

动态SQL语句

动态SQL是指在程序运行时动态生成SQL语句的技术。它允许开发人员在程序运行时根据不同的条件拼接SQL语句,从而灵活地构建各种查询

动态删除数据

动态修改数据

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前段-用面向对象的方式开发一个水管小鸟的游戏

首先准备好各类空文件 index.js css html 和图片 图片是下面这些,如果没有的可在这里下载 2 开发开始 好了,基础准备工作完毕,开发开始, 首先,先把天空,大地,小鸟的盒子准备好,并…

Redis数据库双写一致性解决方案

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

好用的企业防泄密软件盘点

企业防泄密软件是专门设计用于保护企业敏感信息不被泄露的软件产品。这类软件通常采用多种安全技术和策略,以增强企业数据的安全性和保密性,防止核心知识产权和商业机密的泄露。 企业防泄密软件的主要功能包括数据加密、访问控制、审计和监控、文件和数据…

CSS样式穿透

当我们在vue项目中使用第三方组件时,有时候需要去修改某些元素的样式,但有时写的css样式不会覆盖组件的样式,所以要用到样式穿透。 常用的方法有这几种:(1)>>> (2)/deep/ …

flink中配置Rockdb的重要配置项

背景 由于我们在flink中使用了状态比较大,无法完全把状态数据存放到tm的堆内存中,所以我们选择了把状态存放到rockdb上,也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项 使用rockdb状态后端…

电子器件系列44:环形线圈电感

干货!电感最重要、最常见的几个作用_线圈 环形线圈电感的原理: 电感中包含了哪三个物理学定律,为什么它能以磁场形式储能_哔哩哔哩_bilibili 电感的基本原理_哔哩哔哩_bilibili 环形线圈电感的作用: 1.储能器: 环形线圈电感能够…

【Python大数据笔记_day10_Hive调优及Hadoop进阶】

hive调优 hive官方配置url: Configuration Properties - Apache Hive - Apache Software Foundation hive命令和参数配置 hive参数配置的意义: 开发Hive应用/调优时,不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率,或帮助定位问…

005.存储管理

使用硬盘设备前需要对其进行分区、格式化,分区可以使公司业务数据得到更有效的管理。我们需要提前规划好硬盘的存储空间,至于一块硬盘到底要分多少个区,每个分区预留多大空间,这需要根据文件数量、大小、类型等进行对应的设计。有…

c语言:解决判断两个字符串是不是互为旋转字符的问题

题目: 思路:先判断两个字符长度是否相等,如果不相等,肯定不是互为旋转字符串。 方法一:将第一份字符串右旋0-n(字符个数)次,判断是否有一次右旋完的字符串等于第二个字符串。如果有&…

MIKE水动力笔记19_统计平均潮差

本文目录 前言Step 1 ArcGIS中创建渔网点Step 2 将dfsu数据提取到渔网点Step 3 Python统计平均潮差 前言 日平均潮差(average daily tidal range):日高潮潮高合计之和除以实有高潮个数为日平均高潮潮高,日低潮潮高合计之和除以实…

剑指offer(C++)-JZ39:数组中出现次数超过一半的数字(算法-其他)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个…

Taro.navigateTo 使用URL传参数和目标页面参数获取

文章目录 1. Taro.navigateTo 简介2. 通过 URL 传递参数3. 目标页面参数获取4. 拓展与分析4.1 拓展4.2 URL参数的类型4.3 页面间通信 5. 总结 🎉欢迎来到Java学习路线专栏~Taro.navigateTo 使用URL传参数和目标页面参数获取 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x…

C语言--写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false

一.题目描述 写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false。例如: 字符串A:abcde 字符串B&#xff…

搭建yum源并定时同步

一 、安装yum源 1-准备yum目录 cd /data/www/html createrepo -v ./目录 2-安装服务 yum -y install httpd 3-配置服务 /etc/httpd/conf/httpd.conf 4.配置/etc/yum.repo.d/local.rpeo 二、定时更新yum源 #1. 同步整个源到指定目录 [rootV10SP1-1 pac]# reposync -p /root/…

井盖位移监测,智能井盖传感器

在每一个繁华的城市背后,总是有一些默默无闻的英雄。这些英雄或是人或是物,对城市未来建设和城市生命线来讲意义重大。其中井盖作为不可或缺的一部分,默默守护着道路安全与公共安全。它的状态却直接关系到我们的生活便利与安全。近年来随着科…

P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G

模板记录 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define endl "\n" #define x first #define y second #define int long long using namespace std; typedef long long ll; typedef pair<int, int> …

Arduino项目式编程教学前言

前言–先聊聊我的经历 在停更数年之后&#xff0c;还是打算重新开启Arduino编程教学这一项目&#xff1b;这几年间&#xff0c;我从Arduino编程开发教学&#xff0c;转到C及python教学&#xff0c;又到如今的高中数学教学&#xff0c;跨度竟如此之大&#xff0c;但始终未脱离教…

在通用jar包中引入其他spring boot starter,并在通用jar包中直接配置这些starter的yml相关属性

场景 我在通用jar包中引入 spring-boot-starter-actuator 这样希望引用通用jar的所有服务都可以直接使用 actuator 中的功能&#xff0c; 问题在于&#xff0c;正常情况下&#xff0c;actuator的配置都写在每个项目的yml文件中&#xff0c;这就意味着&#xff0c;虽然每个项目…

ArcGIS创建格网

目录 1、创建网格 2、裁剪边界外的网格 3、只保留边界内完整的网格 1、创建网格 首先&#xff0c;我们在创建渔网前&#xff0c;需要指定渔网覆盖的范围。这里我们就以四子王为例 在ArcMap软件中&#xff0c;我们依次选择“Toolboxes”→“Data Management Tools&#xff0…

【漏洞复现】用友移动管理系统文件上传

漏洞描述 用友移动系统管理旧版本uploadApk接口存在任意文件上传&#xff0c;攻击者可在无需登录的情况下上传恶意文件&#xff0c;执行任意命令 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社…