当前位置: 首页 > ds >正文

菜鸟之路Day33一一Mybatis入门

菜鸟之路Day33一一Mybatis入门

作者:blue

时间:2025.5.18

文章内容学习自黑马程序员BV1m84y1w7Tb

文章目录

  • 菜鸟之路Day33一一Mybatis入门
    • **入门案例:使用Mybatis查询所有用户数据**
      • 1.准备工作(创建springboot工程,数据库表user,实体类User)
      • 2.引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)
      • 3.编写SQL语句(注解/XML)
      • 4.lombok

MyBatis是一款优秀的持久层框架,用于简化JDBC的开发

入门案例:使用Mybatis查询所有用户数据

1.准备工作(创建springboot工程,数据库表user,实体类User)

创建springboot工程

在这里插入图片描述

创建User表

在这里插入图片描述

并在其中任意添加若干条数据项

创建实体类User

package com.bluening.mybatis_demo.pojo;public class User {private int id;private String name;private int age;private int gender;private String phone;public User() {}public User(int id, String name, int age, int gender, String phone) {this.id = id;this.name = name;this.age = age;this.gender = gender;this.phone = phone;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getGender() {return gender;}public void setGender(int gender) {this.gender = gender;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", gender=" + gender +", phone='" + phone + '\'' +'}';}
}

2.引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)

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

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306
spring.datasource.username=root
spring.datasource.password=1234

3.编写SQL语句(注解/XML)

package com.bluening.mybatis_demo.mapper;import com.bluening.mybatis_demo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并将该对象交给IOC容器管理
public interface UserMapper {//查询用户全部信息@Select("select * from user")public List<User> findAll();
}
  • @Mapper@Select 是 MyBatis 的注解,用于声明映射器和 SQL 查询。
  • @Mapper 注解
    • 告诉 MyBatis 这是一个映射器接口。
    • 运行时 MyBatis 会自动生成该接口的代理实现类,并注册到 Spring 的 IOC 容器中。
  • @Select 注解
    • 直接在接口方法上声明 SQL 查询语句。
    • 等效于在 XML 配置文件中编写 <select> 标签。
  • 方法签名
    • 返回类型 List<User> 表示查询结果将映射为 User 对象列表。
    • 方法名 findAll() 是自定义的,用于描述查询功能。
  • 执行流程
    1. 调用 userMapper.findAll() 时,MyBatis 执行 SQL:SELECT * FROM user
    2. 将结果集自动映射到 User 对象列表。

单元测试

package com.bluening.mybatis_demo;import com.bluening.mybatis_demo.mapper.UserMapper;
import com.bluening.mybatis_demo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest//springboot整合单元测试的注解
class MybatisDemoApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testListUser() {List<User> users = userMapper.findAll();for (User user : users) {System.out.println(user);}}}

4.lombok

以上代码存在实体类过于臃肿的问题,这时我们可以使用lombok来优化

Lombok是一个实用的java类库,能通过注解的形式自动生成构造器,getter/setter,equals,hashcode,toString等方法,并可以自动化生成日志变量,简化java开发,提高效率

注解作用
@Getter/Setter为所有的属性提供get/set方法
@ToString会给类自动生成易阅读的toString方法
@EqualsAndHashCode根据类所拥有的非静态字段自动重写equals方法和hashCode方法
@Data提供了更综合生成代码的功能(@Getter+@Setter+@ToString+@EqualsHashCode)
@NoArgsConstructor为实体类生成无参的构造器方法
@AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法

引入依赖

 <!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

修改实体类

import lombok.Data;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private int id;private String name;private int age;private int gender;private String phone;
}
http://www.xdnf.cn/news/9128.html

相关文章:

  • halcon 图像预处理
  • 线程安全问题的成因
  • [Java实战]Spring Boot整合达梦数据库连接池配置(三十四)
  • AI智能分析网关V4室内消防逃生通道占用检测算法打造住宅/商业/工业园区等场景应用方案
  • TensorFlow 的基本概念和使用场景
  • C/C++---类型转换运算符
  • WireShark网络抓包—详细教程
  • TinyVue v3.23.0 正式发布:增加 NumberAnimation 数字动画组件、支持全局配置组件的 props
  • 深入解析操作系统内核与用户空间以及内核态与用户态转换
  • Prompt Tuning与自然语言微调对比解析
  • 视频存储开源方案
  • Jupyter Notebook 完全指南:从入门到高效使用
  • OpenFOAM 字典系统与求解器配置解析机制
  • ApplicationRunner接口和@PostConstruct注解
  • 如何选择自动化编程平台
  • 基于Android的个人健康管理系统APP
  • Python 爬虫入门
  • ViT- an image is worth 16x16 words- transformers for image recognition at scale
  • YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点
  • Python学习笔记--Django 表单处理
  • Django orm详解--组成部件
  • 限制 SSH 访问仅允许特定 IP 连接
  • 基于线性回归的短期预测
  • SAST国标分析︱灵脉AI深度兼容GB/T 34943/34944-2017源代码漏洞测试规范
  • LINUX526 回顾 配置ssh rsync定时备份(未完成)
  • OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()
  • 第12次04 :首页展示用户名
  • 数据仓库维度建模详细过程
  • 频繁报FTPResponse 421 received.Server closed connection
  • 1. 数据结构