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

MyBatis操作数据库---从入门到理解

文章目录

  • 关于MyBatis操作数据库
  • MyBatis⼊⻔(使用)
    • Mybatis操作数据库的步骤:
    • 配置数据库连接字符串
    • 使⽤MyBatis完成简单的增删改查操作
      • 注解
      • xml
    • 单元测试
    • 开启驼峰命名(推荐)
  • 打印日志

关于MyBatis操作数据库

在之前的学习,我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao

请求流程如下:浏览器发起请求,先请求Controller,Controller接收到请求之后,调⽤Service进⾏业务逻辑处理,Service再调⽤Dao,但是之前为了简单,我们Dao层的数据是Mock(虚假的、自己编造的)的,真实的数据应该从数据库中读取

我们想到:我们可以使用JDBC来操作数据库,但是JDBC操作实在是太复杂了。。

JDBC回顾

操作流程:

  1. 创建数据库连接池DataSource
  2. 通过DataSource获取数据库连接Connection
  3. 编写带?占位符的SQL语句
  4. 通过Connection及SQL创建操作命令对象Statement
  5. 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值
  6. 使⽤Statement执⾏SQL语句
  7. 查询操作:返回结果集ResultSet,更新操作:返回更新的数量
  8. 处理结果集
  9. 释放资源

我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等~⽽所有的这些操作步骤都需要在每个⽅法中重复书写

那怎么办呢`` 在更为复杂的项目情况中,一定有其他解决办法!!!

  • MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发
  • MyBatis本来是Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到googlecode,并且改名为MyBatis 2013年11⽉迁移到Github
  • 持久层:指的就是持久化操作的层,通常指数据访问层(dao),是⽤来操作数据库的

MyBatis⼊⻔(使用)

Mybatis操作数据库的步骤:

  1. 准备⼯作(创建springboot⼯程、导⼊mybatis的起步依赖、mysql的驱动包)
  2. 引⼊Mybatis的相关依赖,配置Mybatis(数据库连接信息)
  3. 编写SQL语句
  4. 测试

在这里插入图片描述

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

配置数据库连接字符串

Mybatis中要连接数据库,需要数据库相关参数配置
• MySQL驱动类
• 登录名
• 密码
• 数据库连接字符串
如果是application.yml⽂件,配置内容如下:

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

使⽤MyBatis完成简单的增删改查操作

注解

Mybatis的持久层接⼝规范⼀般都叫XxxMapper
@Mapper注解:表⽰是MyBatis中的Mapper接⼝
• 程序运⾏时,框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理
• @Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容
在这里插入图片描述
在这里插入图片描述
使⽤#{} 的⽅式获取⽅法中的参数

@Mapper
public interface UserInfoMapper {//查询所有用户@Select("select username, `password`, age, gender, phone from userinfo")public List<UserInfo> queryAllUser();
}
@Select("select username, `password`, age, gender, phone from userinfo where 
id= #{id} ")
UserInfo queryById(Integer id);

xml

  1. 配置数据库连接字符串和MyBatis
  2. 写持久层代码
# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件 
mybatis:mapper-locations: classpath:mapper/**Mapper.xml

持久层代码分两部分

  1. ⽅法定义Interface
  2. ⽅法实现:XXX.xml
    在这里插入图片描述

在这里插入图片描述

单元测试

在创建出来的SpringBoot⼯程中,在src下的test⽬录下,可以自动创建测试类,
直接使⽤这个测试类来进⾏测试 在需要测试的Mapper接⼝中,右键->Generate->Test
在这里插入图片描述

开启驼峰命名(推荐)

通常数据库列使⽤蛇形命名法进⾏命名(下划线分割各个单词),⽽Java属性⼀般遵循驼峰命名法约定
为了在这两种命名⽅式之间启⽤⾃动映射,需要将mapUnderscoreToCamelCase 设置为true

mybatis:configuration:map-underscore-to-camel-case: true #配置驼峰⾃动转换 

打印日志

在Mybatis当中我们可以借助⽇志,查看sql语句的执⾏、执⾏传递的参数以及执⾏结果

在配置⽂件中进⾏配置即可

mybatis:configuration: # 配置打印 MyBatis⽇志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

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

tip:

掌握MyBatis的写法
掌握MyBatis相关的⽇志配置

相关文章:

  • 硬件工程师面试常见问题(7)
  • LeetCode-Hot100
  • CentOS 7 磁盘分区详细教程
  • 【框架学习】Spring AI-功能学习与实战(一)
  • SpringBoot | 构建客户树及其关联关系的设计思路和实践Demo
  • 【CAPL实战:以太网】对IPv4报文的Payload部分进行分片并创建分片包
  • Vue 的单文件组件(.vue 文件)script 标签的使用说明
  • AI赋能安全调度系统:智能升级与功能跃迁
  • KMS工作原理及其安全性分析
  • Leetcode19(亚马逊真题):删除链表的倒是第N个节点
  • 特征存储的好处:特征存储在机器学习开发中的优势
  • dumpsys activity activities中的Task和ActivityRecord信息解读
  • 【Linux网络】应用层自定义协议与序列化及Socket模拟封装
  • 2025上海车展|紫光展锐发布新一代旗舰级智能座舱芯片平台A888
  • Trae 编程工具 Cline 插件安装与 Claude 3.7 API Key 自定义配置详解
  • 济南国网数字化培训班学习笔记-第二组-6-输电线路现场教学
  • 热度大幅度下降,25西电经济与管理学院(考研录取情况)
  • html单页业务介绍源码
  • RuntimeError: “unfolded2d_copy“ not implemented for ‘Half‘
  • 从零搭建高可用分布式限流组件:设计模式与Redis令牌桶实践
  • 经济日报刊文:积极应对稳住外贸基本盘
  • 再放宽!新版市场准入负面清单发布,无人驾驶航空器、电子烟等新业态被纳入
  • 新增1839个!2024年度本科专业备案和审批结果,公布
  • “从山顶到海洋”科技成果科普巡展在重庆启动,免费开放
  • 陕西一批干部任职公示:西安市未央、雁塔、阎良区委书记拟调整
  • 女子“伸腿阻拦高铁关门”被行拘,事件追踪:当时发生了什么?