[Java Web]Mybatis->超八千字详细介绍,带你由浅入深认识了解mybatis(下)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: [Java Web]Mybatis->超八千字详细介绍,带你由浅入深认识了解mybatis(下)

pojo类和Java been的区别:pojo类可以不提供全部的getter和setter方法,以及有参无参构造器等,而javaBeen的流程则更为繁琐一些。

⑧创建Mybatis的示例类:MybatisDemo

1. package com.xzl;
2. 
3. import com.xzl.pojo.User;
4. import org.apache.ibatis.io.Resources;
5. import org.apache.ibatis.session.SqlSession;
6. import org.apache.ibatis.session.SqlSessionFactory;
7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
8. 
9. import java.io.IOException;
10. import java.io.InputStream;
11. import java.util.List;
12. 
13. public class MybatisDemo {
14. public static void main(String[] args) throws IOException{
15. //1、加载mybatis核心配置文件,获取SqlSessionFactory
16. String resource = "mybatis-config.xml";
17. InputStream inputStream = Resources.getResourceAsStream(resource);
18. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
19. //2、获取sqlSession对象,用来执行sql
20. SqlSession sqlSession = sqlSessionFactory.openSession();
21. //3、执行sql
22.         List<User> users = sqlSession.selectList("com.xzl.pojo.User.selectAll");
23.         System.out.println(users);
24.         sqlSession.close();
25.     }
26. }

3.3、注意事项

3.3.1、⭐MybatisDemo步骤

1.加载Mybatis核心配置文件,获取SqlSessionFactory对象

       1.1、先获取字节缓存输入流

InputStream inputStream = Resources.getResourceAsStream(resource);

通过getClass可以看到,最终获取的是一个字节缓冲输入流

       1.2、获取SqlSessionFactory->

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

2.获取SqlSession对象,用来执行sql->

SqlSession sqlSession = sqlSessionFactory.openSession();

3.执行sql->List<User> users = sqlSession.selectList("com.xzl.pojo.User.selectAll");

4.释放资源->sqlSession.close();

3.3.2、bug

如果代码检查了并无问题,但是却报错:

可能是SQL映射文件的加载除了问题:需要检查mybatis配置文件中加载SQL映射文件的部分:

可能是resource的资源路径书写有误,可以尝试去直接复制路径看看:

还有一个可能就是,MySQL驱动包的版本较高。MySQL 8+版本的驱动包中,在mybatis核心配置文件配置MySQL连接的url时,参数部分的连接不能用"&"而要使用"&"替代

例如:

3.3.3、映射文件警告信息

在映射配置文件中存在报红的情况。问题如下:

产生的原因:Idea和数据库没有建立连接,不识别表信息。但是它并不影响程序的执行。

解决方式:在Idea中配置MySQL数据库连接。

步骤:

点击IDEA右边框的 Database ,在展开的界面点击 + 选择 Data Source ,再选择 MySQL

在弹出的界面进行基本信息的填写,点击完成后就能看到如下界面

而此界面就和 navicat 工具一样可以进行数据库的操作。也可以编写SQL语句

4、代理开发

4.1、简介

之前的代码是基本使用方式,它也存在硬编码的问题,如下:

这里调用 selectList() 方法传递的参数是映射配置文件中的namespace.id值

这样写也不便于后期的维护。如果使用Mapper 代理方式则不存在硬编码问题:

通过上面的描述可以看出 Mapper 代理方式的目的:

解决原生方式中的硬编码

简化后期执行SQL

Mybatis 官网也是推荐使用 Mapper 代理的方式。下图是截止官网的图片:

4.2、使用要求

使用Mapper代理方式,必须满足以下要求:

①定义 与 SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。如下:

②设置SQL映射文件的namespace属性为Mapper接口全限定名

③在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致

4.3、代理代码实现

步骤:

①创建UserMapper接口:

②UserMapper.xml 映射配置文件

③创建MybatisDemo2类:

4.3.1、注意事项

如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。也就是将mybatis核心配置文件的加载映射配置文件的配置修改为:

4.4、mapper代理的bug

这个部分请查看我的另一篇文章:


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
5月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
572 1
|
5月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
640 0
|
6月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
752 64
|
6月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
474 1
|
7月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
806 0
|
7月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
629 0
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
239 1
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
511 0
|
前端开发 Java 数据库
Java Web开发全攻略:构建高性能Web应用
【4月更文挑战第2天】Java Web开发围绕Servlet和JSP展开,结合Spring/Spring Boot、Struts2、Hibernate等框架构建高性能应用。数据库选择和优化、前端技术如Angular/React/Vue.js以及CI/CD实践是关键。从电子商务到企业系统,Java Web技术为企业与用户互动提供强大平台。持续学习和适应新技术,以应对Web开发挑战。
625 1
Java Web开发全攻略:构建高性能Web应用
|
安全 Java 数据库连接
Java Web应用
Java Web应用
111 0