MyBatis 从入门到进阶(一)

引言:

在应用层分层架构中,Web请求的流程通常是:

在Dao层,原生的JDBC太繁琐并且容易出错。

JDBC流程:获取连接、编写带?(占位符)的SQL、创建PreparedStatement、挨个替换占位符(还要自己对参数类型)、处理ResultSet并手动映射到实体类、最后在finally里关闭连接防止内存泄漏。

MyBatis是一款优秀的半自动持久层框架(Dao层)。

目录

一、准备工作

二、注解开发

1.查(Select)

2.增(Insert)

3.改(Update)

4.删(Delete)


一、准备工作

在Spring Boot环境下,创建工程并勾选MyBatis Framework和MySQLDriver后,通常会自动生成依赖,MyBatis的版本会随Spring Boot版本变化。

配置数据库连接字符串(.yml配置文件),建议直接复制

纯数字密码需要加双引号

开启日志

二、注解开发

1.查(Select)

无参查询全部,返回json数据到浏览器

按照id查询(单个参数)

此时容器里就是这个Integer值本身。#{ }里面写#{id}、#{value}都能取到,因为MyBatis对简单的参数不做Key的严格校验。但为了代码可读性,建议与形参名保持一致。

多个参数查询

多参数时,MyBatis的ParamNameResolver会将参数封装成一个Map。如果没有使用@Param指定Key,它默认使用的Key是param1/param2

变量名不匹配,会报错找不到变量

变量名匹配,顺序改变,不会报错

字段映射问题(驼峰命名)

数据库字段是delete_flag,实体类属性是deleteFlag。查询结果中该字段为null。因为MyBatis默认自动映射时,要求数据库列名和java属性名完全一致(忽略大小写)

解决方案:在yml配置文件中开启驼峰自动转换:

模糊查询(Like)

根据用户名进行模糊查询,使用concat函数

2.增(Insert)

基础插入,insert默认返回的是受影响的函数

获取自增主键,将id赋值到userinfo对象上

3.改(Update)

基础更新

4.删(Delete)

基础删除

相关推荐
量化分析码农2 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.2 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
瑞雪兆丰年兮2 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗2 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle
Cosolar3 小时前
极简智库:快速搭建你的开源项目教程阅读平台,让 docs/ 目录被更多人看见
java·架构·github
nice_lcj5203 小时前
【从零理解 Spring AI · 16】Agent 与工作流:什么该写死,什么该让模型决定
java·人工智能·后端·spring ai·ai应用开发
北京云帆互联科技4 小时前
云帆培训考试系统更新说明:v9.3.0
java·学习
学长毕设5 小时前
基于SpringBoot的景点管理系统-附源码
java·spring boot·后端
sxlishaobin6 小时前
Maven Setting详解
java·学习·maven