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

本文涉及的产品
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;
相关文章
|
4月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
484 1
|
4月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
489 0
|
5月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
663 64
|
5月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
431 1
|
6月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
725 0
|
6月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
508 0
|
7月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1286 1
Spring boot 使用mybatis generator 自动生成代码插件
|
10月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
815 0
|
12月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
598 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
660 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。