SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习

这篇具有很好参考价值的文章主要介绍了SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习

一、当前的主流框架介绍(这就是后期我会发出来的框架学习)

Spring框架

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的,其主要优势之一就是分层架构。Spring提供了更完善的开发环境,可以为POJO(Plain Ordinary Java Object,普通Java对象)对象提供企业级的服务。


Spring MVC框架

​ Spring MVC是一个Web开发框架,可以将它理解为Servlet。在MVC模式中,Spring MVC作为控制器(Controller)用于实现模型与视图的数据交互,是结构最清晰的。

Spring MVC框架采用松耦合、可插拔的组件结构,具有高度可配置性,与其他的MVC框架相比,具有更强的扩展性和灵活性。


MyBatis框架

​ MyBatis 是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为MyBatis ,2013年11月MyBatis又被迁移到Github。

MyBatis是一个优秀的持久层框架,它可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(Object/Relation Mapping,即对象关系映射)实现。MyBatis封装性要低于Hibernate,但它性能优越、简单易学,在互联网应用的开发中被广泛使用。


Spring Boot 框架

​ Spring Boot 框架是 Pivotal 团队基于 Spring 开发的全新框架,其设计初衷是为了简化 Spring 的配置,使用户能够构建独立运行的程序,提高开发效率。

Spring Boot 框架本身并不提供 Spring 框架的核心特性及扩展功能,它只是用于快速、敏捷地开发新一代基于 Spring 框架的应用,同时它还集成了大量的第三方类库(如Jackson、JDBC、Redis 等),使用户只需少量配置就能完成相应功能。


Spring Cloud 框架

Spring Cloud 是一系列框架的有序集合为开发人员构建微服务架构提供了完整的解决方案,它利用Spring Boot 的开发便利性巧妙地简化了分布式系统的开发。例如,配置管理、服务发现、控制总线等操作,都可以使用 Spring Boot 做到一键启动和部署。可以说,Spring Cloud 将 Spring Boot 框架进行了再封装,屏蔽掉了复杂的配置和实现原理,具有简单易懂、易部署和易维护等特点。


那么开始今天的主题MyBatis的学习

二、什么是MyBatis?

MyBatis是一个支持普通SQL查询、存储过程以及高级映射的半自动化持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,使用简单的“XML”或“注解”进行配置和原始“映射”,将接口和Java的POJO映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。

PS:(名词解释)

  1. XML(可扩展标记语言): XML 是一种标记语言,用于描述数据的结构和内容。它被广泛用于数据的存储、交换和表示。XML 使用标签来标识数据的不同部分,并使用元素、属性和文本来组织数据。XML 具有可扩展性,允许用户定义自己的标签和数据结构。由于其通用性和可扩展性,XML 在 Web 开发、数据传输、配置文件等领域都有广泛应用
  2. 注解(Annotation): 注解是一种元数据(metadata),可以应用于代码中的类、方法、字段等元素。**它们不会直接影响程序的执行,但可以提供额外的信息给编译器、解释器、工具和其他程序。在 Java 中,注解是以 @ 符号为前缀的特殊标记。**注解可以用于提供编译时的指示、运行时的处理、文档生成等。常见的 Java 注解包括 @Override表明是方法重写、@FunctionalInterface函数式接口、@Nullable表明元素可以为null、@Autowired 用于标记字段、构造器或方法,表示自动装配(自动注入)该组件 等(后面我会发一个常见注解的说明)
  3. 映射(Mapping):在编程中,映射通常指的是将一个数据或对象关联到另一个数据或对象的过程。这可以是不同数据结构之间的对应关系,比如数据库表的列与对象属性的对应关系,或者是 URL 路径与控制器方法的对应关系。在数据库中,对象-关系映射(ORM)指的是将数据库表映射到面向对象的类的过程。在 Web 开发中,URL 路由映射指的是将请求的 URL 映射到相应的处理程序或方法上。

​ MyBatis框架是一个ORM(Object/Relation Mapping,即对象关系映射)框架所谓的ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。ORM框架的工作原理可以通过一张图来展示。SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

(这段加粗文字如果简单理解的话,那就是可以把Java中的数据类型自动转换识别成数据库的数据类型

当使用ORM框架将Java中的基本数据类型映射到数据库时,通常的映射规则如下:
  1. byte --> TINYINT
  2. short --> SMALLINT
  3. int --> INT
  4. long --> BIGINT
  5. float --> FLOAT
  6. double --> DOUBLE
  7. boolean --> BIT(对于MySQL和SQL Server等数据库),BOOLEAN(对于PostgreSQL等数据库)
  8. char --> CHAR(通常用于存储单个字符) String --> VARCHAR(通常用于存储字符串)

不同的数据库系统可能有不同的数据类型名称,因此在特定的数据库中可能会略有差异。此外,ORM框架也允许进行自定义配置,以适应不同的数据库需求。

此外,还有一些其他特殊类型,例如日期和时间类型,也可以在ORM中进行映射,比如:

  • java.util.Date 或 java.time.LocalDate --> DATE
  • java.util.Time 或 java.time.LocalTime --> TIME
  • java.util.Date 或 java.time.LocalDateTime --> DATETIME 或 TIMESTAMP

​ 上面这些就是我们学习Java常见的8种基本数据类型在数据库中的通用映射规则。但具体的映射规则可能会因不同的ORM框架或数据库而有所区别,因此在实际开发中,还是得根据实际情况和需求进行相应的配置和调整。

​ 了解完MyBatis的基本概念之后,我们就该到了如何使用MyBatis?想要使用首先就得引入,简单来说就是搭建MyBatis的开发环境。


三、如何搭建MyBatis的开发环境?

搭建环境的步骤如下:
  1. 创建工程后引入相关依赖。(本地lib导入jar包或者Pom.xml写入依赖信息,Maven方式导入)

  2. 数据库准备(就是指创建好准备链接的数据库) 。 比如:MySQL Oracle PostgreSQL

  3. 编写数据库连接信息配置文件(db.properties 、database.properties、dbconfig.properties

    、jdbc.properties都是指同一个文件,也就是数据库连接信息配置文件)

  4. 编写核心配置文件和映射文件。

​ 一般来说都不会自己去写,只有少部分会需要我们去写。大部分的都是可以去网上下载模板然后自己修改一下基本信息就可以用了。

引入依赖(Maven方式引入需要联网)➡编写配置文件(数据库连接信息配置文件、MyBatis核心配置文件)➡

这里简单讲解一下吧,方便理解。

①引入相关依赖的代码

<!--Pom文件编写依赖引入 只展示了其中一个依赖-- >
<dependencies>
    <!-- MySQL Connector Java 引入java链接MySQL的依赖 -->
    <dependency>
        <groupId>mysql</groupId> <!-- 依赖名 -->
        <artifactId>mysql-connector-java</artifactId> <!-- 组件名 ID -->
        <version>8.0.11</version> <!-- 版本号 -->
    </dependency>
    <!-- 其他依赖项 -->
    ...<!--尝试模仿并写出其他项依赖引入,写不出也可以去我资源找对应的文件下载,都是敲好的-->
</dependencies>

③db.properties文件

//db.properties文件

# MySQL数据库驱动程序类名
mysql.driver=com.mysql.cj.jdbc.Driver

# MySQL数据库连接URL,指定主机、端口、数据库名称和其他参数
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false

# MySQL数据库用户名
mysql.username=root

# MySQL数据库密码
mysql.password=root

④mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 加载 db.properties 文件 -->
    <properties resource="db.properties"/>

    <environments default="development">
        <!-- 设置开发环境 -->
        <environment id="development">
            <!-- 使用 JDBC 事务管理器 -->
            <transactionManager type="JDBC"/>
            
            <!-- 使用 POOLED 数据源 -->
            <dataSource type="POOLED">
                <!-- 指定数据库驱动程序 -->
                <property name="driver" value="${mysql.driver}" />
                <!-- 指定数据库连接 URL -->
                <property name="url" value="${mysql.url}" />
                <!-- 指定数据库用户名 -->
                <property name="username" value="${mysql.username}" />
                <!-- 指定数据库密码 -->
                <property name="password" value="${mysql.password}" />
            </dataSource>
        </environment>
    </environments>
</configuration>

​ 使用POOLED数据源的意思是:它表示使用连接池数据源,“POOLED” 是Maven配置文件中 <dataSource> 配置项的一个属性值

​ 连接池是一组预先创建并管理的数据库连接。当应用程序需要与数据库进行交互时,它可以从连接池中获取一个可用的数据库连接,执行操作完成后再将连接放回连接池,而不是每次都创建和关闭连接。这种方式可以提高性能和效率,避免了频繁创建和销毁数据库连接的开销。

​ 具体到这个配置文件中,<dataSource type="POOLED"> 指定了使用 POOLED 数据源类型。通过这个配置,Maven将会根据数据库连接信息和连接池配置参数,创建一个连接池数据源供应用程序使用。这样,在应用程序需要进行数据库操作时,它可以从这个连接池中获取连接,而不是每次都重新创建新的连接,从而提高性能和效率。

​ 到这里环境就已经搭建好了。


四、编写MyBatis入门程序

​ ①:数据库准备➡②:pojo类编写➡③:mapper文件(sql语句)编写➡④:mybatis-config文件中添加mapper文件resources的地址➡⑤:编写测试类。


​ 首先要准备好一个要链接的数据库,编写好数据设计语句,设计表的同时呢,插入俩条语句进去,这样方便我们后续测试。记得若是链接的数据库有改变,那么我们前面的数据库链接信息配置文件也需要修改,就是db.properties。

​ 首先我们要新建实体类上面也有提到的pojo包(普通JAVA对象),这里的话就要与数据库的表字段一一对应,这样才能映射过去。一般来说一个表对应一个类,也就是一个对象。

​ 如下图:我们采用的PasswordMS表中的结构如下:

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

那么我们的pojo包下的成员变量应该是这样子定义的:

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

​ 字段名和变量名一一对应。不要忘了生成Getter和Setter方法,因为我们的访问修饰符是private私有的,那么如果不开放公共的方法来设置或获取变量的值,这样的话会导致只有在类的内部能够访问到,所以不能忘记嗷,这也是面向对象的设计原则之一,也是封装的基本特征,合理开放,合理暴露。

​ 编写一下Mapper.xml,里面编写sql语句,动态sql语句,这里我们要针对一下数据库表的关系,然后去对java对象进行一个映射,关系有一对一、一对多等。越复杂的sql编写,需要注意的点就越多。

​ 编写mapper,需要在标签对里面

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

编写mapping文件路径配置,在mybatis-config.xml中下。这样mybatis才能够识别我们的mapper文件,才能够使用映射语句,不会导致出错。

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

因为我们前面引入了Junit测试依赖,那么就简单编写一下测试类吧,看看我们编写的Mapper接口能不能正常映射到数据库。

//PasswordMSTest.java
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import pojo.PasswordMS;

import java.io.IOException;
import java.io.Reader;
import java.util.List;


class PasswordMSTest {
    private Logger logger= Logger.getLogger(PasswordMSTest.class);
    @org.junit.jupiter.api.Test
    void getUid() {
        //读取文件名:
        String resources="mybatis-config.xml";

        //创建流
        Reader reader = null;
        try{
            reader = Resources.getResourceAsReader(resources);
        }catch (IOException e){
            e.printStackTrace();
        }
        //初始化mybatis数据库,创建SqlSessionFactory类的实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建SqlSession实例

        SqlSession session = sqlSessionFactory.openSession();
        
        //传入参数查询,返回结果
        PasswordMS passwordMS = session.selectOne("findById",1);
        logger.info("姓名:"+passwordMS.getAccount()+",密码:"+passwordMS.getPassword()+",网站:"+passwordMS.getWebsiteName());
        //关闭session
        session.close();
    }

    @org.junit.jupiter.api.Test
    void getAllItem() {
        //读取文件名:
        String resources="mybatis-config.xml";

        //创建流
        Reader reader = null;
        try{
            reader = Resources.getResourceAsReader(resources);
        }catch (IOException e){
            e.printStackTrace();
        }
        //初始化mybatis数据库,创建SqlSessionFactory类的实例
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建SqlSession实例

        SqlSession session = sqlSessionFactory.openSession();
        //传入参数查询,返回结果
        List<PasswordMS> passwordMS = session.selectList("findAll");
        for(PasswordMS s:passwordMS){
        logger.info("id:"+s.getId()+",账号:"+s.getAccount()+",密码:"+s.getPassword()+",网站名:"+s.getWebsiteName()+",网站网址:"+s.getWebsiteURL()+",网站缩略图:"+s.getWebsiteImage()+",账号描述:"+s.getAccountDescription());
        //关闭session
            // }
        session.close();
    }
}
}

这里的代码逻辑用讲么?如果是有学过java基础和java高级编程的,应该代码逻辑都是能看懂得。

这里可以推荐看看我发的学习记录,基本上有看完,都是可以理解的。

输出结果如下图:

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

与数据库中写入的完全一致,若是出现NUll值,可能就是pojo类编写不正确,没有字段名和变量名一直,其次可能是映射类型不对等,认真往上翻看看嗷。

PS:关于findAll的sql映射语句需要自己在PasswordMSMapper.xml中编写完成嗷


Mybatis的工作原理:

*SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习,SSM框架的学习,JAVA企业级应用开发必学框架,学习,spring,mvc

MyBatis框架在操作数据库时,大体经过了8个步骤。下面结合MyBatis工作原理图对每一步流程进行详细讲解,具体如下。

(1)MyBatis读取核心配置文件mybatis-config.xml:mybatis-config.xml核心配置文件主要配置了MyBatis的运行环境等信息。

(2)加载映射文件Mapper.xml:Mapper.xml文件即SQL映射文件,该文件配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。

(3)构造会话工厂:通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory,用于创建SqlSession。

(4)创建会话对象:由会话工厂SqlSessionFactory创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

(5)创建执行器:会话对象本身不能直接操作数据库,MyBatis底层定义了一个Executor接口用于操作数据库,执行器会根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存地维护。

(6)封装SQL信息:SqlSession内部通过执行器Executor操作数据库,执行器将待处理的SQL信息封装到MappedStatement对象中。

(7)操作数据库:根据动态生成的SQL操作数据库。

(8)输出结果映射:执行SQL语句之后,通过MappedStatement对象将输出结果映射至Java对象中。


总结

​ 这是第一天对SSM框架的学习,先初识Mybatis,了解什么是半自动化持久层框架、映射、pojo、连接池连接数据源等。想要跟着学习的可以去我的资源里面找对应的文件下载,我的md文件也会发上去,项目文件会上传可以自己跟着学习一下。上面的只是简单的俩个查询的例子,可以自己完善一下增删改查的实例。

作者:Stevedash

发表于:2023年8月20日 21点45分文章来源地址https://www.toymoban.com/news/detail-661791.html

注:本文内容基于个人学习理解,如有错误或疏漏,欢迎指正。感谢阅读!如果觉得有帮助,请点赞和分享。

到了这里,关于SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (第十一天)初识SpringMVC SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

    今天我们要来学习一下SSM框架的最后一个框架SpringMVC 一、初认SpringMVC 基本概念: ​ Spring MVC(Model-View-Controller)是一个用于构建Java Web应用程序的开源框架,它提供了一种基于MVC架构的方式来开发Web应用 。 ​ SpringMVC是Spring Framework的一部分,它是一种基于模型-视图-控制器(

    2024年02月07日
    浏览(71)
  • Java EE企业级应用开发(SSM)第9章

    1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导入jar包资源 4-1:编写实体类 4-2:编写mapper接口以及映射文件 4-3:编写mybatis-config配置文件 4-4:编

    2024年02月04日
    浏览(50)
  • Java EE企业级应用开发(SSM)第10章

    1.第九章的细节处理 1-1.mappers标签中的配置 1-2.jdbc属性文件的配置 1-3.包的别名配置 2.Mybatis核心配置文件 2-1:settings标签(P145-146中的表10-1) 2-2.类型别名 3.Mybatis映射文件 3-1:insert、update、delete元素属性 3-2:select元素 3-3:ResultMap详解 ResultMap详解 4.动态SQL 4-1:if 注意模糊查询

    2024年02月03日
    浏览(49)
  • Java EE企业级应用开发(SSM)第6章

    1.Spring MVC的请求参数 项目的基础配置 web.xml springmvc-config.xml jar包资源引入: 1-1:获取默认参数 jsp页面如下: Controller如下: 1-2:简单数据类型(获取数据不同,只展示Controller) 1-3:注解配置参数名(RequestParam) 2.Spring MVC的请求响应 2-1:响应ModelAndView:返回数据和页面 2-2:响

    2023年04月18日
    浏览(54)
  • SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!

    (1) 创建工程 创建一个Maven的web工程 pom.xml添加SSM需要的依赖jar包 编写Web项目的入口配置类,实现 AbstractAnnotationConfigDispatcherServletInitializer 重写以下方法。 getRootConfigClasses() :返回Spring的配置类-需要 SpringConfig 配置类。 getServletConfigClasses() :返回SpringMVC的配置类-需要 SpringMvc

    2024年01月17日
    浏览(58)
  • 探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty

    🎉欢迎来到Java面试技巧专栏~探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java面试技巧 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习

    2024年02月08日
    浏览(58)
  • Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发

    1、开发工具和使用技术 MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。 2、实现功能 前台用户包含:注

    2023年04月26日
    浏览(84)
  • Java EE 企业级应用开发教程题库(第二版)

      Java EE这是一门偏向于实践的课,奈何考试理论居多。一学期想搞懂三个框架,嘿嘿,难哦!如果你是大一大二的同学,认认真真学习,真的有用。如果你是大三的同学,像就业并且走这个方向的同学,也认真学习。如果你大三考研的同学,自己安排时间。这里是我平时的

    2024年02月09日
    浏览(46)
  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《Rest风格简介与RESTful入门》 前面我们已经把Mybatis、Spring和SpringMVC三个框架

    2024年02月04日
    浏览(72)
  • 【Java EE】关于Spring MVC 响应

    在博主前面写的博客 【Java EE】Spring请求如何传递参数详解 中我们已经设置了响应数据,Http响应结果可以是数据,也可以是静态⻚⾯,也可以针对响应设置状态码, Header信息等 首先我们像创建一个静态界面,创建位置如下: 前端代码如下: 不过这里的后端的代码和以前的代码

    2024年04月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包