首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【MyBatis】什么是MyBatis,怎么配置数据库

【MyBatis】什么是MyBatis,怎么配置数据库

作者头像
椰椰椰耶
发布2025-07-22 09:18:13
发布2025-07-22 09:18:13
22300
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

什么是 MyBatis

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

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

简单来说 MyBatis 是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具。

数据库配置

代码语言:javascript
代码运行次数:0
运行
复制
# 数据库连接配置  
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
  • 这是配置,在 .yml 文件中

[!quote] 企业建表规范:

  1. 字段名统一用小写,单词之间使用下划线分割
  2. 建表字段:自增字段,更新时间,创建时间

MyBatis 的使用

  1. 添加依赖:MyBatis 依赖、MySQL 驱动
image.png|291
image.png|291
  1. 配置数据库
代码语言:javascript
代码运行次数:0
运行
复制
# 数据库连接配置  
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
  1. Mapper
代码语言:javascript
代码运行次数:0
运行
复制
@Mapper  
public interface UserInfoMapper {  
  
    @Select("select * from userinfo")   //接口方法的实现(通过注解)
    List<UserInfo> getUserInfoAll();    //方法定义
}

常见问题:

  1. SQL 语句写错
image.png
image.png

这个信息是从 MySQL 报过来的

image.png
image.png
  • 如果不知道是不是 SQL 的问题,就把 SQL 语句复制出来,放到 SQL 客户端中运行一下,看能否运行

  1. 配置信息错误(密码错了)
  2. 未配置数据库、数据库配置错误
  3. 数据库不存在
  4. 表不存在
  5. Mapper 中的方法名不能重复

MyBatis 的基础操作

首先我们要根据创建对象,mybatis 才能把查询到的结果给我们

image.png|352
image.png|352

企业建表规范

  1. 字段名统一小写,单词之间使用下划线分割
  2. 建表字段(必有):自增字段,更新时间,创建时间
  3. 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字
  4. 不允许出现任何大写字母

打印日志

MyBatis 中,我们可以借助日志,查看到 SQL 语句的执行、执行传递的参数以及执行结果在配置文件中进行配置即可

代码语言:javascript
代码运行次数:0
运行
复制
mybatis:  
  configuration: # 配置打印 MyBatis⽇志  
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

重新运行程序,可以看到 SQL 执行内容,以及传递参数和执行结果:

image.png
image.png
  • ①:查询语句
  • ②:传递参数及类型
  • ③:SQL 执行结果

参数传递

需求:查找 id=4 的用户,对应的 SQL 就是:select * from userinfo wherer id = 4

代码语言:javascript
代码运行次数:0
运行
复制
@Select("select * from userinfo where id = 4")  
List<UserInfo> queryById(Integer id);

但是这样的话,智能查找 id=4 的数据,所以 SQL 语句中的 id 值不能写成固定数值,需要变为动态的数值 解决方案:queryById 方法中添加一个参数 id,将方法中的参数,传给 SQL 语句

  • 使用 #{} 的方式获取方法中的参数
代码语言:javascript
代码运行次数:0
运行
复制
@Select("select * from userinfo where id = #{id}")  
List<UserInfo> queryById(Integer id);

  • 如果 Mapper 接口方法形参只有一个普通类型的参数,#{} 里面的属性名可以随便写,如:#{id}、#{value}。建议和参数名保持一致
  • 但有多个参数的时候,

添加测试用例:

代码语言:javascript
代码运行次数:0
运行
复制
@Test  
void getUserInfoByDelete() {  
    System.out.println(userInfoMapper.queryById(4));

运行结果:

image.png
image.png
  • 也可以通过 @Param,设置参数的别名,如果使用 @Param 设置别名,#{...} 里面的属性名必须和 @Param 设置的一样
代码语言:javascript
代码运行次数:0
运行
复制
@Select("select * from userinfo where id = #{userid}")  
List<UserInfo> queryById(@Param("userid") Integer id);

不过我们一般都让参数名保持一致


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 MyBatis
  • 数据库配置
  • MyBatis 的基础操作
    • 企业建表规范
  • 打印日志
  • 参数传递
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档