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

MyBatis(上)

1. 什么是MyBatis?

• MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发。

• MyBatis本是Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到了googlecode,并 且改名为MyBatis。2013年11⽉迁移到Github.

• 官⽹:MyBatis中⽂⽹ 在上⾯我们提到⼀个词:持久层

• 持久层:指的就是持久化操作的层,通常指数据访问层(dao),是⽤来操作数据库的.

简单来说MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库⼯具 接下来,我们就通过⼀个⼊⻔程序,让⼤家感受⼀下通过Mybatis如何来操作数据库

2. MyBatis⼊⻔

Mybatis操作数据库的步骤:

1. 准备⼯作(创建springboot⼯程、数据库表准备、实体类)

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

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

4. 测试

2.1 准备⼯作

2.1.1 创建⼯程

创建springboot⼯程,并导⼊mybatis的起步依赖、mysql的驱动包

Mybatis是⼀个持久层框架,具体的数据存储和数据操作还是在MySQL中操作的,所以需要添加 MySQL驱动 项⽬⼯程创建完成后,⾃动在pom.xml⽂件中,导⼊Mybatis依赖和MySQL驱动依赖 版本会随着SpringBoot版本发⽣变化 SpringBoot3.X对⽤MyBatis版本为3.X

对应关系参考:https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

<!--Mybatis 依赖包--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <!--mysql驱动包--> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>

2.1.2 数据准备

创建⽤⼾表,并创建对应的实体类User

2.1.2 数据准备 创建⽤⼾表,并创建对应的实体类User -- 使⽤数据数据 USE mybatis_test; -- 创建表[⽤⼾表] DROP TABLE IF EXISTS user_info; CREATE TABLE `user_info` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `username` VARCHAR ( 127 ) NOT NULL, `password` VARCHAR ( 127 ) NOT NULL, `age` TINYINT ( 4 ) NOT NULL, `gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认', `phone` VARCHAR ( 15 ) DEFAULT NULL, `delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除', `create_time` DATETIME DEFAULT now(), `update_time` DATETIME DEFAULT now() ON UPDATE now(), PRIMARY KEY ( `id` ) ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4; -- 添加⽤⼾信息 INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'admin', 'admin', 18, 1, '18612340001' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' ); INSERT INTO mybatis_test.user_info( username, `password`, age, gender, phone ) VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

创建对应的实体类UserInfo

实体类的属性名与表中的字段名⼀ 对应

import lombok.Data; import java.util.Date; @Data public class UserInfo { private Integer id; private String username; private String password; private Integer age; private Integer gender; private String phone; private Integer deleteFlag; private Date createTime; private Date updateTime; }

2.2 配置数据库连接字符串

Mybatis中要连接数据库,需要数据库相关参数配置

• MySQL驱动类

• 登录名

• 密码

• 数据库连接字符串

如果是application.yml⽂件,配置内容如下:

# 数据库连接配置 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/mybatis_test? characterEncoding=utf8&useSSL=false username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver

注意事项: 如果使⽤MySQL是5.x之前的使⽤的是"com.mysql.jdbc.Driver",如果是⼤于5.x使⽤的 是“com.mysql.cj.jdbc.Driver”.

如果是application.properties⽂件,配置内容如下:

#驱动类名称 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test? characterEncoding=utf8&useSSL=false #连接数据库的⽤⼾名 spring.datasource.username=root #连接数据库的密码 spring.datasource.password=root

2.3 写持久层代码

在项⽬中,创建持久层接⼝UserInfoMapper

import com.example.demo.model.UserInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface UserInfoMapper { //查询所有⽤⼾ @Select("select username, `password`, age, gender, phone from user_info") public List<UserInfo> queryAllUser(); }

Mybatis的持久层接⼝规范⼀般都叫XxxMapper @Mapper注解:表⽰是MyBatis中的Mapper接⼝

• 程序运⾏时,框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理

• @Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容.

2.4 单元测试

在创建出来的SpringBoot⼯程中,在src下的test⽬录下,已经⾃动帮我们创建好了测试类,我们可以 直接使⽤这个测试类来进⾏测试.

import com.example.demo.mapper.UserInfoMapper; import com.example.demo.model.UserInfo; 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 class DemoApplicationTests { @Autowired private UserInfoMapper userInfoMapper; @Test void contextLoads() { List<UserInfo> userInfoList = userInfoMapper.queryAllUser(); System.out.println(userInfoList); } }

测试类上添加了注解@SpringBootTest,该测试类在运⾏时,就会⾃动加载Spring的运⾏环境. 我们通过@Autowired这个注解,注⼊我们要测试的类,就可以开始进⾏测试了

运⾏结果如下:

返回结果中,可以看到,只有SQL语句中查询的列对应的属性才有赋值

使⽤Idea⾃动⽣成测试类 除此之外,也可以使⽤Idea⾃动⽣成测试类

1. 在需要测试的Mapper接⼝中,右键->Generate->Test

2. 选择要测试的⽅法,点击OK

3. 书写测试代码

import com.example.demo.model.UserInfo; 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 class UserInfoMapperTest { @Autowired private UserInfoMapper userInfoMapper; @Test void queryAllUser() { List<UserInfo> userInfoList = userInfoMapper.queryAllUser(); System.out.println(userInfoList); } }

记得加@SpringBootTest 注解,加载Spring运⾏环境

运⾏结果:

http://www.jsqmd.com/news/1258253/

相关文章:

  • AI内容降重实战:从37%到8%的优化方法论
  • 2026达州漏水检测维修本地口碑榜TOP5权威推荐-专业仪器精准测漏-正规防水补漏公司推荐:卫生间/厨房/屋顶/阳台/外墙渗漏水检测师傅上门 - 安佳防水
  • 如何高效录制抖音直播:专业工具完整使用教程
  • 2026许昌漏水检测维修本地口碑榜TOP5权威推荐-专业仪器精准测漏-正规防水补漏公司推荐:卫生间/厨房/屋顶/阳台/外墙渗漏水检测师傅上门 - 安佳防水
  • 解锁AMD锐龙处理器隐藏潜力:SMUDebugTool硬件级调试完全指南
  • 许昌本地防水补漏精选TOP5推荐:正规漏水检测维修公司上门师傅推荐:厕所/棚顶/屋面/飘窗/阳台/地下室/厨房渗漏水精准测漏维修(2026最新) - 即刻修防水
  • 如何用5步快速掌握D2NN全光神经网络:光速AI推理的终极指南
  • 全栈独立产品数据库选型复盘:PostgreSQL 还是 MongoDB
  • 帮我在书本上画出了回忆中的学校-提示词
  • YOLO在GUI元素检测中的应用与优化
  • HarmonyOS 6.1.1 智能字幕、卡证识别与信息助手怎么设计?
  • GitHub Copilot Pro、Tabnine Enterprise、CodeWhisperer商业版性能解密(内部Benchmark泄露版):仅剩72小时可获取完整测试报告
  • 如何在单台电脑上实现分屏多人游戏:Nucleus Co-op 完全配置指南
  • Windows虚拟化环境安全与性能优化指南
  • 社交场景话题生成算法设计与实践
  • 用AI做治愈系音乐号
  • Linux系统服务管理:从System V init到systemd的演进与实战
  • 网卡驱动相关知识及移植
  • AI角色设计:从文字描述到精准视觉生成的技术解析
  • 北京电脑死机蓝屏数据丢失怎么办?2026年电脑维修推荐来了 - 本地品牌推荐
  • AI艺术生成可靠性评估:从理论到实践
  • 上海周浦中小学英语培训深度分析|家长常见痛点、孩子英语优势、机构正确选择方法
  • Transformer训练中的损失平台期与突发学习现象解析
  • 如何快速掌握网盘直链下载助手:新手完整指南
  • Vue3网易云音乐项目实战:从组合式API到性能优化完整指南
  • Figma中文汉化终极指南:设计师必备的免费开源工具
  • Google Flow免费额度实战:从自动化原理到生产环境落地指南
  • 多模态 Agent 的感知融合:看到和读到的东西要一致
  • 2026年小程序制作平台哪个便宜?低成本搭建和长期维护成本分析
  • 【2027最新】基于SpringBoot+Vue的员工健康管理系统管理系统源码+MyBatis+MySQL