Java阶段二Day16

news/2025/2/13 5:14:31/

Java阶段二Day16

文章目录

  • Java阶段二Day16
    • SSM
    • SpringBoot
      • 简述
      • 核心特性
      • 创建SpringBoot工程
      • 创建工程失败排查
    • MyBatis框架-注解管理
      • 概述
      • MyBatis环境初始化
      • 整合MyBatis
      • Pojo对象设计
      • Dao接口设计

SSM

  • Spring:Spring是一个轻量级的容器和框架,为开发者提供了一个IoC容器和AOP框架,Spring框架包含很多核心子项目。

  • Spring MVC:SpringMVC是Spring框架的一个核心子项目,是一个基于MVC设计模式的Web框架,它提供了一系列功能,使得开发者能够快速开发灵活、易于维护的Web应用程序。

  • MyBatis:MyBatis是基于 Java 的持久层框架,用于和数据库映射,MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis通过XML或注解的方式来配置SQL和映射关系,灵活性非常高。

SpringBoot

​ 在传统JAVAEE应用体系中创建一个项目,需要手动添加大量的依赖,还要考虑版本的兼容性,还有繁重的配置、负载的项目部署,会高度影响开发效率,即使是使用Spring进行资源整合,也存在同样的这些问题。

​ 还有就是现在的软件生态应用也已经形成一定的规模,整个软件架构体系在变化,企业对技术的要求也在变化,现在的企业更注重技术的开箱即用,更注重技术在生态圈中的深度融合,更注重轻量级的运维。由此由此spring boot诞生。

简述

​ Spring Boot是一个全新的Java软件开发框架(很多人现在把它理解为一个脚手架),其设计目的是用来简化Spring项目的初始搭建以及开发过程,并为后面的Spring Cloud 微服务实践提供更加便利条件。该框架使用了特定的注解方式来进行配置,从而使开发人员不再需要大量的xml配置。不再需要大量的手动依赖管理。Spring Boot基于快速构建理念,通过约定大于配置,开箱即用的方式,希望能够在蓬勃发展的快速应用开发领域成为其领导者。

核心特性

SpringBoot 框架诞生后,之所以能得到软件开发行业的高度认可,自然离不开它提供给我们的一些关键特性,例如:

  1. 起步依赖(Starter Dependency)-创建项目时,会默认添加基础依赖,简化我们自己查找依赖的过程。
  2. 自动配置(Auto Configuration)-创建项目时,springboot工程添加的默认依赖中提供了很多默认的配置,简化了我们对资源的配置过程。
  3. 嵌入式服务(Tomcat,Jetty)-springboot工程支持内嵌的web服务,可以将tomcat这样的服务直接嵌套到web依赖中,简化部署过程。

创建SpringBoot工程

  • 使用 Spring 官方的服务器URL: https://start.spring.io 或 https://start.springboot.io
  1. Alt + Insert --> Module --> Spring Initalizr

    在这里插入图片描述

  2. 在第二个页面选择 Web - Spring WebSpring Boot版本为2.7.11,然后点击Finish

在这里插入图片描述

创建工程失败排查

  • 创建完工程后,查看Build页卡中是否显示了绿色的对钩

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H0TKEvNF-1683533860168)(E:/TeduWork/jsd2303-springmvc-tea/note/mybatis/images/image-20230421092823099.png)]

  • 如果没有显示绿色对钩而是红色报错,解决方案如下

    • 检查maven配置

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNrz18LK-1683533860170)(E:/TeduWork/jsd2303-springmvc-tea/note/mybatis/images/image-20230420184116832.png)]

    • 刷新maven

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K0daHe3U-1683533860170)(E:/TeduWork/jsd2303-springmvc-tea/note/mybatis/images/image-20230421093025690.png)]

    • 如果刷新之后还没有成功

      1. 检查Maven配置是否正确,检查 .m2 目录下是否包含 settings.xml 文件
      2. 如果Maven配置没有问题,删除 .m2 目录下的 repository目录,然后再次刷新Maven
      3. 如果以上步骤还是不成功,创建一个新工程重试

MyBatis框架-注解管理

概述

Mybatis是一个优秀的持久层框架(官网https://mybatis.org/mybatis-3/),底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis框架的简单应用架构,如图所示:
在这里插入图片描述

在当今的互联网应用中项目,mybatis框架通常会由spring家族进行资源整合,作为数据层技术实现数据交互操作。使用此框架程序员只需要通过注解或者修改xml配置文件的方式配置好需要执行的SQL语句,MyBatis框架会根据SQL语句生成对应的JDBC代码并对数据库中数据进行增删改查操作。

在SpringBoot脚手架工程中,Spring框架会基于MyBatis框架底层配置,创建SqlSessionFactory对象,然后再通过此工厂对象创建SqlSession,最后基于Spring框架为测试类注入SqlSession对象,可以通过SqlSession对象实现与数据库的会话了。如图所示:
在这里插入图片描述

MyBatis环境初始化

  • 工程名:mybatis 选择Java 8版本

  • SpringBoot版本:2.7.11

  • 勾选3项依赖项

    • Srping Web

    • MyBatis Framework

    • MySQL Driver

整合MyBatis

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

spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai&characterEncoding=utf8
spring.datasource.username=数据库用户名
spring.datasource.password=数据库密码

Pojo对象设计

在工程目录中创建pojo包,并创建Weibo

package com.liner.mybatis.pojo;import java.util.Date;public class Weibo {private Integer id;private String content;private Date Created;private Integer UserId;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Date getCreated() {return Created;}public void setCreated(Date created) {Created = created;}public Integer getUserId() {return UserId;}public void setUserId(Integer userId) {UserId = userId;}@Overridepublic String toString() {return "Weibo{" +"id=" + id +", content='" + content + '\'' +", Created=" + Created +", UserId=" + UserId +'}';}
}

Dao接口设计

  • @Mapper注解

    是由MyBatis框架提供,用于描述数据层接口,告诉系统底层为此接口创建其实现类,在实现类中定义数据访问逻辑,执行与数据库的会话(交互)

  • @Insert注解

    使 MyBatis 框架根据接口方法的返回值和参数类型自动生成插入数据的代码

  • @Select注解

    使 MyBatis 框架根据接口方法的返回值和参数类型自动生成查询数据的代码

  • @Update注解

    使 MyBatis 框架根据接口方法的返回值和参数类型自动生成修改数据的代码

  • @Delete注解

    使 MyBatis 框架根据接口方法的返回值和参数类型自动生成删除数据的代码

  • 占位符 #{}

    #{} 是 MyBatis 框架中用来表示占位符的语法。

    @Insert 注解中,#{} 所代表的是一个占位符,它可以接受 Java 对象作为输入参数,并将其转换为预编译的 SQL 语句中的参数。使用 #{} 可以帮助我们避免 SQL 注入等问题,同时也方便了参数的类型转换,让 SQL 写起来更加简单。

  • @Param注解

    @Param用于指定参数名和参数值。

    在使用 MyBatis 进行 SQL 语句开发时,使用 @Param 注解将方法参数映射到 SQL 语句中需要的占位符上,这样做的好处是可以清晰地表达 SQL 语句中占位符的含义,更容易使用和维护 SQL 语句

基于MyBatis规范设计用户数据访问接口,在工程目录下创建包mapper,并创建WeiboMapper接口

package com.liner.mybatis.mapper;import com.liner.mybatis.pojo.Weibo;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface WeiboMapper {/**在微博表中插入数据*/@Insert("INSERT INTO weibo VALUES(NULL,#{content},#{created},#{userId})")int insert(Weibo weibo);/**查询所有微博信息*/@Select("SELECT * FROM weibo")List<Weibo> selectWeibo();/**根据微博id查询数据*/@Select("SELECT * FROM weibo WHERE id=#{id}")Weibo selectByWeiboId(int id);/**更新微博表数据*/@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")int updateById(Weibo weibo);/**删除微博表数据*/@Delete("DELETE FROM weibo WHERE id=#{id}")int deleteById(@Param("id") Integer id);
}

测试类新建测试方法进行测试

/**自动装配*/
@Autowired
private WeiboMapper weiboMapper;/**在微博表中插入数据-测试方法*/
@Test
void InsertWeibo(){Weibo weibo = new Weibo();weibo.setContent("今天天气真不错呀");weibo.setCreated(new Date());weibo.setUserId(1);weiboMapper.insert(weibo);
}/**查询所有微博信息-测试方法*/
@Test
void selectWeiboTest(){System.out.println(weiboMapper.selectWeibo());
}/**根据微博id查询数据*/
@Test
void selectByWeiboIdTest(){System.out.println(weiboMapper.selectByWeiboId(2));
}/**更新微博表数据-测试*/
@Test
void updateById(){Weibo weibo = new Weibo();weibo.setId(1);weibo.setContent("这是我修改后的微博");weibo.setCreated(new Date());weibo.setUserId(1);System.out.println(weiboMapper.updateById(weibo));
}/**删除微博表数据-测试*/
@Test
void deleteByIdTest(){System.out.println(weiboMapper.deleteById(1));
}

注:insert、update、delete返回值为受影响的数据条数int。


http://www.ppmy.cn/news/62056.html

相关文章

antd-vue - - - - - row-selection的使用

1. 正常需求使用 antd-vue table 官方示例代码如下&#xff1a; <template><a-table :row-selection"rowSelection" :columns"columns" :data-source"data"><template #bodyCell"{ column, text }"><template …

jeecgboot online代码生成 一对多

首先把前后端环境都起起来&#xff0c;此处略 点击online表单开发&#xff0c;设计主附表&#xff0c;表示一对多(一对一)关系&#xff0c;“一”对应主表&#xff0c;“多”对应附表&#xff0c;如图 表设计完成&#xff0c;点击同步可直接在数据库中生成数据表。 附表注意…

ERP与WMS有哪些区别和联系?

一、什么是ERP ERP&#xff08;Enterprise Resource Planning&#xff09;是企业资源计划系统&#xff0c;它是一套综合的管理软件系统&#xff0c;可以帮助企业对各种业务管理、生产制造、供应链、销售财务等进行管理和优化。ERP系统的核心功能包括人力资源管理、物料管理、财…

如何在Emacs中设置字体大小?- 探索Emacs的设置字体大小方法

如何在Emacs中设置字体大小&#xff1f; Emacs是一款强大的文本编辑器&#xff0c;它拥有一些强大的功能&#xff0c;其中之一就是字体大小设置。虽然大多数编辑器都支持字体大小设置&#xff0c;但是Emacs的设置方式可能更加直观和易于使用。下面是如何在Emacs中设置字体大小的…

记录一次docker镜像迁移过程

1.在母本服务器上查看要复刻的docker镜像。 sv800:build 作为docker镜像源[repository:tag],使用docker save 指令提出docker镜像包rk3588.tar docker save -o rk3588.tar sv800:build 2.在新环境下加载docker镜像包&#xff0c;预先安装docker指令工具 docker load -i rk35…

等保定级怎么做

Q25:现在还没做等保还来得及吗?有什么影响? 答:来得及。种一棵树,最好的时间是十年前,其次是现在。可先根据定级备案要求和流程,先向公安递交定级备案文件,测评与整改预算提上日程,在经费未落实前,可以先进行系统定级、差距分析、整改计划制订等工作。 根据《等保工…

八、(了解即可)MyBatis懒加载(或者叫延迟加载)

文章目录 八、懒加载(了解即可)8.1 为啥需要懒加载?8.2 懒加载是什么&#xff1f;8.3 开启方式8.4 既然fetchType可以控制懒加载那么我仅仅配置fetchType不配置全局的可以吗&#xff1f;8.5 aggressiveLazyLoading是做什么么的&#xff1f;8.6 注意点8.7 案例验证懒加载准备工…

Python每日一练:小艺的口红(暴力、二分、图论三种方法)代写匿名信

文章目录 前言0、题目一、暴力查找二、二分查找三、有序二叉树总结&#xff08;代写匿名信&#xff09; 前言 很明显小艺的口红问题是考的是查找算法&#xff0c;对于这种一次性查找&#xff0c;直接暴力就行了&#xff0c;当然咱是为了学习&#xff0c;所以用来练练各种查找&…