Mybatis快速入门大全(详细版)

发布时间:2026/9/21 14:30:32

Mybatis快速入门大全(详细版) MyBatis是一款流行的持久层框架简化了JDBC操作。以下是其基础入门语法1.核心配置文件mybatis-config.xml用于配置数据库连接和映射文件位置。?xml version1.0 encodingUTF-8 ?!DOCTYPEconfigurationPUBLIC-//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtdconfigurationenvironmentsdefaultdevelopmentenvironmentiddevelopmenttransactionManagertypeJDBC/dataSourcetypePOOLEDpropertynamedrivervaluecom.mysql.cj.jdbc.Driver/propertynameurlvaluejdbc:mysql://localhost:3306/test/propertynameusernamevalueroot/propertynamepasswordvaluepassword//dataSource/environment/environmentsmappersmapperresourceUserMapper.xml//mappers/configuration2.SQL映射文件UserMapper.xml定义SQL语句与Java方法的映射关系。?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.example.mapper.UserMapper!-- 查询单个用户 --selectidselectUserparameterTypeintresultTypecom.example.entity.UserSELECT * FROM users WHERE id #{id}/select!-- 插入用户 --insertidinsertUserparameterTypecom.example.entity.UserINSERT INTO users (name, age) VALUES (#{name}, #{age})!-- 获取自增主键 --selectKeykeyPropertyidresultTypeintorderAFTERSELECT LAST_INSERT_ID()/selectKey/insert/mapper3.Java实体类User.java对应数据库表结构。publicclassUser{privateIntegerid;privateStringname;privateIntegerage;// getters/setters}4.Mapper接口UserMapper.java定义操作数据库的方法。publicinterfaceUserMapper{UserselectUser(intid);intinsertUser(Useruser);}5.获取SqlSession并执行操作// 加载配置文件InputStreaminputStreamResources.getResourceAsStream(mybatis-config.xml);SqlSessionFactorysqlSessionFactorynewSqlSessionFactoryBuilder().build(inputStream);// 执行查询try(SqlSessionsessionsqlSessionFactory.openSession()){UserMappermappersession.getMapper(UserMapper.class);Userusermapper.selectUser(1);System.out.println(user.getName());}6.动态SQL根据条件动态生成SQL语句。selectidfindUsersresultTypeUserSELECT * FROM userswhereiftestname ! nullAND name #{name}/ififtestage ! nullAND agegt;#{age}/if/where/select7.参数处理#{}预编译处理防止SQL注入${}直接替换用于表名、列名等selectidselectUsersresultTypeUserSELECT * FROM ${tableName} WHERE age #{minAge}/select8.结果映射处理列名与属性名不一致的情况。resultMapiduserResultMaptypeUseridpropertyidcolumnuser_id/resultpropertynamecolumnuser_name//resultMapselectidselectUserresultMapuserResultMapSELECT user_id, user_name FROM users WHERE id #{id}/select9.事务管理SqlSessionsessionsqlSessionFactory.openSession(false);// 手动提交try{UserMappermappersession.getMapper(UserMapper.class);mapper.insertUser(user1);mapper.insertUser(user2);session.commit();// 提交事务}catch(Exceptione){session.rollback();// 回滚事务throwe;}finally{session.close();}10.注解方式替代XMLpublicinterfaceUserMapper{Select(SELECT * FROM users WHERE id #{id})UserselectUser(intid);Insert(INSERT INTO users (name, age) VALUES (#{name}, #{age}))Options(useGeneratedKeystrue,keyPropertyid)intinsertUser(Useruser);}
延伸阅读

更多相关文章

2026/9/21 13:39:52

Java8 日期处理(详细版)

1. java8 - Instant 重要知识点 定义:Instant 表示时间线上的一个瞬时点,精确到纳秒,主要用于处理机器可读的时间戳,基于 Unix 时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 开始的秒数)。常用方法 now()&…

2026/9/20 5:46:54

如何用大麦抢票助手轻松搞定热门演出票?3大核心优势解析

如何用大麦抢票助手轻松搞定热门演出票?3大核心优势解析 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 大麦抢票助手是一款免费开…

2026/9/19 8:04:02

Mybatis数据分页的多种实现方式详解

MyBatis 实现数据分页主要有以下几种方式: 1. SQL 分页(手动分页) 在 SQL 语句中直接使用数据库特定的分页语法,如 MySQL 的 LIMIT 和 OFFSET,Oracle 的 ROWNUM 等。 示例(MySQL): S…

2026/9/21 14:28:55

VS2022中STL容器调试失灵?手写Natvis自定义可视化全指南

做C开发这些年,VS2022的调试器一直是主力工具,但STL容器在“关键时刻”的显示问题,几乎每个项目都会撞上一次。尤其是当项目切换到自定义内存分配器之后,vector在监视窗口里直接变成三个指针成员——_Myfirst、_Mylast、_Myend——…

2026/9/21 14:28:55

Qt离线安装全攻略:从选型到Kit配置的完整指南

1. 为什么离线装 Qt 这件事值得单独写一篇如果你所在的项目环境是内网、工控机、涉密终端,或者客户现场压根没有外网,那你迟早会撞上“Qt 离线安装”这堵墙。在线安装器走不通,apt、yum、pip全部失效,连下载一个 30MB 的 MinGW 都…

2026/9/21 14:28:55

第010篇 中高级JavaScript 语言核心面试实录(小红书):事件循环中宏任务与微任务的执行顺序

摘要:本篇复盘 小红书 前端开发岗位在 JavaScript 语言核心 方向的真实问法,重点拆 8 道题:TCP 的拥塞控制怎么工作、V8 引擎如何执行 JavaScript,JIT 优化原理、设计一个短链服务需要考虑哪些点。每题按「考察点 → 参考答案 → 代码/实操 → 易错点 → 面试官追问」五段…

2026/9/21 14:28:55

第008篇 JavaScript 语言核心面试通关:网易如何考防抖与节流分别怎么实现,适用场景有何不同

摘要:本篇复盘 网易 前端开发岗位在 JavaScript 语言核心 方向的真实问法,重点拆 8 道题:闭包的本质,为什么会引发内存泄漏、依赖注入解决了什么问题,和工厂有何不同、防抖与节流分别怎么实现,适用场景有何不同。每题按「考察点 → 参考答案 → 代码/实操 → 易错点 → …

2026/9/21 14:23:54

Vue开发服务器卡住问题排查与解决

1. 问题现象与初步排查最近在Vue项目开发中遇到了一个棘手的问题:使用vue-cli-service serve命令启动本地开发服务器时,进程会莫名其妙地卡住。具体表现为控制台输出停留在"Starting development server..."后就不再继续,浏览器也无…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码