当前位置: 首页 > 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相关的⽇志配置

http://www.xdnf.cn/news/113239.html

相关文章:

  • Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
  • centos7使用certbot完成nginx ssl证书续期
  • 最高支持高速L3商用,华为发布ADS 4智驾系统
  • 【OSG学习笔记】Day 8: 纹理贴图——赋予模型细节
  • MCU通信接口技术解析:UART、SPI与I2C
  • 【云计算】云计算中IaaS、PaaS、SaaS介绍
  • 基于 springboot+vue+elementui 的办公自动化系统设计(
  • 系统与网络安全------弹性交换网络(3)
  • Unity MR开发:探索混合现实的无限可能 (VisionPro和HoloLens 2 对比)
  • 【KWDB 创作者计划】_上位机知识篇---Github
  • 虚拟机详解
  • 第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
  • 计算机网络学习笔记
  • Rust实现高性能目录扫描工具ll的技术解析
  • java面向对象编程【基础篇】之基础语法
  • 【产品经理从0到1】Axure介绍
  • Windows申请苹果开发者测试证书Uniapp使用
  • 基于 Spring Boot 的银行柜台管理系统设计与实现(源码+文档+部署讲解)
  • C语言之阶乘2.0
  • 区块链技术:深入共识算法、智能合约与DApps的架构奥秘
  • JAVA设计模式——(五)享元模式(Flyweight Pattern)
  • 快速配置linux远程开发-go语言
  • Web3中心化交易所钱包-批量地址生成业务
  • 测试基础笔记第十一天
  • 第十四届蓝桥杯省B.砍树
  • 如何创建极狐GitLab 议题?
  • 膳食营养诊断活动:科技赋能,共筑全民健康新基石
  • Langchain+RAG+向量数据库
  • GitHub万星项目维护者分享:开源协作的避坑指南
  • C++ 日志系统实战第二步:不定参数函数解析