新闻详情

新闻详情

首页 / 资讯中心 / 详情

MyBatis核心类用法详解

发布时间:2026/11/12 4:13:50来源:尧图网络
MyBatis核心类用法详解
MyBatis 是一款优秀的持久层框架它支持定制化 SQL、存储过程以及高级映射。其核心类构成了 MyBatis 框架的基础理解这些核心类的用法对于掌握 MyBatis 至关重要。以下是对 MyBatis 核心类及其用法的详细介绍1.SqlSessionFactoryBuilder这是 MyBatis 的初始化类负责从配置文件或配置类构建SqlSessionFactory对象。用法示例importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.InputStream;publicclassMyBatisUtil{privatestaticSqlSessionFactorysqlSessionFactory;static{try{// 加载 MyBatis 配置文件Stringresourcemybatis-config.xml;InputStreaminputStreamResources.getResourceAsStream(resource);// 构建 SqlSessionFactorysqlSessionFactorynewSqlSessionFactoryBuilder().build(inputStream);}catch(Exceptione){e.printStackTrace();}}publicstaticSqlSessionFactorygetSqlSessionFactory(){returnsqlSessionFactory;}}关键方法build(InputStream inputStream)从 XML 配置文件构建SqlSessionFactory。build(Configuration config)从自定义的Configuration对象构建SqlSessionFactory。2.SqlSessionFactorySqlSessionFactory是 MyBatis 的核心工厂类负责创建SqlSession对象。一个应用通常只需要一个SqlSessionFactory实例。用法示例// 获取 SqlSessionFactory 实例SqlSessionFactorysqlSessionFactoryMyBatisUtil.getSqlSessionFactory();// 创建 SqlSessiontry(SqlSessionsessionsqlSessionFactory.openSession()){// 执行数据库操作}关键方法openSession()创建一个非自动提交的SqlSession。openSession(boolean autoCommit)指定是否自动提交事务。openSession(ExecutorType executorType)指定执行器类型SIMPLE、REUSE、BATCH。3.SqlSessionSqlSession是 MyBatis 的核心接口它提供了执行 SQL 语句、管理事务等方法。每个线程都应该有自己独立的SqlSession实例。用法示例try(SqlSessionsessionsqlSessionFactory.openSession()){// 方式一通过全限定名获取 Mapper 方法Userusersession.selectOne(com.example.mapper.UserMapper.selectUserById,1);// 方式二通过 Mapper 接口获取代理对象UserMapperuserMappersession.getMapper(UserMapper.class);UseruseruserMapper.selectUserById(1);// 插入操作UsernewUsernewUser(John,Doe);userMapper.insertUser(newUser);// 提交事务非自动提交模式下session.commit();}关键方法selectOne(String statement, Object parameter)查询单个结果。selectList(String statement, Object parameter)查询列表结果。insert(String statement, Object parameter)插入数据。update(String statement, Object parameter)更新数据。delete(String statement, Object parameter)删除数据。getMapper(ClassT type)获取 Mapper 接口的代理对象。commit()提交事务。rollback()回滚事务。4.Mapper 接口Mapper 接口是 MyBatis 推荐的编程方式它通过接口方法和注解或 XML绑定 SQL 语句。Mapper 接口示例importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Select;MapperpublicinterfaceUserMapper{// 使用注解定义 SQLSelect(SELECT * FROM users WHERE id #{id})UserselectUserById(intid);// 也可以通过 XML 文件定义 SQL只需方法签名匹配voidinsertUser(Useruser);}关键点Mapper 接口无需实现类MyBatis 会自动生成代理对象。方法名和参数需与 XML 或注解中的 SQL 定义匹配。5.ConfigurationConfiguration是 MyBatis 的全局配置对象包含了所有 MyBatis 的配置信息。用法示例// 手动创建 Configuration 对象ConfigurationconfignewConfiguration();config.setLazyLoadingEnabled(true);config.setCacheEnabled(true);// 注册映射器config.addMapper(UserMapper.class);// 构建 SqlSessionFactorySqlSessionFactorysqlSessionFactorynewSqlSessionFactoryBuilder().build(config);常见配置项settings各种全局设置如延迟加载、缓存等。typeAliases类型别名注册。mappers映射器注册。environments数据库环境配置。6.ExecutorExecutor是 MyBatis 的执行器负责 SQL 语句的执行和缓存的维护。执行器类型SIMPLE默认执行器每个 SQL 都会创建新的预处理语句PreparedStatement。REUSE复用预处理语句提高性能。BATCH批量执行器适用于批量插入、更新操作。配置方式!-- mybatis-config.xml --settingssettingnamedefaultExecutorTypevalueREUSE//settings7.TypeHandlerTypeHandler用于实现 Java 类型与 JDBC 类型之间的转换MyBatis 内置了许多常用的类型处理器。自定义 TypeHandler 示例importorg.apache.ibatis.type.BaseTypeHandler;importorg.apache.ibatis.type.JdbcType;importjava.sql.*;importjava.time.LocalDateTime;publicclassLocalDateTimeTypeHandlerextendsBaseTypeHandlerLocalDateTime{OverridepublicvoidsetNonNullParameter(PreparedStatementps,inti,LocalDateTimeparameter,JdbcTypejdbcType)throwsSQLException{ps.setTimestamp(i,Timestamp.valueOf(parameter));}OverridepublicLocalDateTimegetNullableResult(ResultSetrs,StringcolumnName)throwsSQLException{Timestamptimestamprs.getTimestamp(columnName);returntimestamp!null?timestamp.toLocalDateTime():null;}// 其他方法实现...}注册自定义 TypeHandler!-- mybatis-config.xml --typeHandlerstypeHandlerhandlercom.example.handler.LocalDateTimeTypeHandler//typeHandlers总结MyBatis 的核心类通过工厂模式、代理模式和构建者模式协作形成了一个灵活且高效的持久层框架。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉