news 2026/4/24 10:40:44

MyBatis框架详解与第一个入门程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis框架详解与第一个入门程序

MyBatis框架详解与第一个入门程序

什么是MyBatis?

MyBatis 是一个持久化框架,它使得数据库操作变得简单和灵活。与Hibernate这样的全自动 ORM 框架不同,MyBatis 通过 XML 或注解配置 SQL 语句,开发者可以完全控制 SQL 语句的编写。因此,它适用于需要高度定制化 SQL 操作的场景。

MyBatis 的主要特点

  • SQL 控制:MyBatis 允许开发者写出高度定制的 SQL,避免了 Hibernate 自动生成的 SQL 在某些复杂查询中的问题。

  • 灵活性:与 Hibernate 不同,MyBatis 不会对实体类的字段进行映射,开发者可以完全控制 SQL 查询。

  • 良好的集成性:MyBatis 与 Spring 等框架集成非常方便,能够满足企业级应用的需求。

  • 支持存储过程:MyBatis 支持数据库存储过程,提供了对存储过程和函数的良好支持。

  • 不需要使用注解:虽然 MyBatis 支持注解,但 XML 配置方式更加灵活和清晰。

MyBatis 入门程序

为了帮助大家更好地理解 MyBatis,这里我们将通过一个简单的 MyBatis 入门示例,来展示 MyBatis 的基本用法。

项目依赖配置

首先,确保你已经有一个 Java 项目。我们将使用 Maven 来管理依赖。

pom.xml文件中添加 MyBatis 相关的依赖:

<dependencies> <!-- MyBatis Core --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <!-- MyBatis-Spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <!-- Database Driver (MySQL as an example) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <!-- Logging (Optional, for debugging) --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.32</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.32</version> </dependency> </dependencies>

配置 MyBatis

接下来,配置 MyBatis。通常,我们需要一个配置文件mybatis-config.xml来定义数据库连接信息和 MyBatis 的全局设置。

mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!-- 事务管理器 --> <transactionManager type="JDBC"/> <!-- 数据源配置 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> <!-- 映射文件 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration>
UserMapper.xml

在 MyBatis 中,SQL 语句通常存放在映射文件中,这些映射文件通常位于resources文件夹下。

<?xml version="1.0" encoding="UTF-8" ?> <mapper namespace="com.example.mapper.UserMapper"> <!-- 查询用户信息 --> <select id="selectUser" resultType="com.example.model.User"> SELECT id, username, password FROM users WHERE id = #{id} </select> <!-- 插入新用户 --> <insert id="insertUser" parameterType="com.example.model.User"> INSERT INTO users (username, password) VALUES (#{username}, #{password}) </insert> </mapper>

创建实体类

接下来,我们需要一个与数据库表结构对应的实体类User,该类将用于数据的封装和传递。

User.java
package com.example.model; public class User { private int id; private String username; private String password; // Getters and Setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

创建 Mapper 接口

Mapper 接口用来定义数据库操作的接口方法。接口的方法名要与 XML 配置文件中的id对应。

UserMapper.java
package com.example.mapper; import com.example.model.User; public interface UserMapper { User selectUser(int id); void insertUser(User user); }

配置 Spring 和 MyBatis 整合

如果我们使用 Spring 来管理 MyBatis 的配置和事务,下面是一个简单的 Spring 配置。

spring-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- MyBatis Configuration --> <bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example"/> <property name="username" value="root"/> <property name="password" value="password"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"/> </bean> <bean id="userMapper" class="com.example.mapper.UserMapper"/> </beans>

编写主程序

最后,我们需要一个主程序来运行我们的 MyBatis 程序,调用对应的 SQL 操作。

Main.java
package com.example; import com.example.mapper.UserMapper; import com.example.model.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { // Spring 上下文加载 ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); // 获取 UserMapper UserMapper userMapper = context.getBean(UserMapper.class); // 查询用户 User user = userMapper.selectUser(1); System.out.println("User: " + user.getUsername()); // 插入新用户 User newUser = new User(); newUser.setUsername("new_user"); newUser.setPassword("password123"); userMapper.insertUser(newUser); } }

总结

在本篇博客中,我们介绍了 MyBatis 的基本概念、配置以及如何写一个简单的 MyBatis 入门程序。通过上面的示例代码,我们展示了如何使用 MyBatis 执行基本的数据库操作(查询和插入)。

MyBatis 适合需要高度自定义 SQL 查询的应用场景,并且与 Spring 等框架整合方便。希望通过这篇文章,你对 MyBatis 有了更深入的了解,并能够使用它来进行实际开发。

如果你希望继续深入了解 MyBatis,可以进一步学习其高级特性,如动态 SQL、缓存、批量操作等。


如果你有任何问题或想进一步了解 MyBatis,欢迎在评论区留言。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 0:20:57

如何运用巴菲特的智慧进行投资

如何运用巴菲特的智慧进行投资关键词&#xff1a;巴菲特、投资智慧、价值投资、长期投资、安全边际、财务分析、企业护城河摘要&#xff1a;本文旨在深入探讨如何运用巴菲特的投资智慧进行投资。从介绍巴菲特投资理念的背景出发&#xff0c;详细阐述其核心概念&#xff0c;包括…

作者头像 李华
网站建设 2026/4/17 1:19:44

AutoGPT + Token服务 构建可持续运行的AI智能体

AutoGPT 与 Token 管理&#xff1a;构建可持续运行的 AI 智能体 在企业自动化需求日益增长的今天&#xff0c;一个典型的问题反复浮现&#xff1a;如何让 AI 不只是回答问题&#xff0c;而是真正“把事情做完”&#xff1f;我们不再满足于每次点击都需手动输入指令的聊天机器人…

作者头像 李华
网站建设 2026/4/23 16:00:51

力扣--262. 行程和用户(数据库题目)

前言&#xff1a; 这个力扣数据库题单里面的一道题&#xff0c;当时看文字很多&#xff0c;直接看的案例&#xff0c;一开始没什么思路&#xff0c;对CASE WHEN函数接触确实少&#xff0c;一开始没下起来! 题目&#xff1a; 表&#xff1a;Trips ----------------------- |…

作者头像 李华
网站建设 2026/4/20 12:41:45

手把手教你部署LobeChat镜像,打造个性化AI助手门户

手把手教你部署LobeChat镜像&#xff0c;打造个性化AI助手门户 在大模型技术席卷全球的今天&#xff0c;越来越多用户不再满足于使用封闭的商业AI聊天工具。虽然像ChatGPT这样的产品体验出色&#xff0c;但数据隐私、高昂成本和功能受限等问题始终是悬在头顶的达摩克利斯之剑。…

作者头像 李华
网站建设 2026/4/24 1:29:00

LobeChat能否集成ClickHouse?大数据日志分析方案

LobeChat 与 ClickHouse 的融合&#xff1a;构建高性能 AI 聊天日志分析平台 在企业级 AI 应用日益普及的今天&#xff0c;一个看似简单的“聊天框”背后&#xff0c;往往隐藏着复杂的交互逻辑与海量的数据流动。LobeChat 作为一款现代化的开源大语言模型&#xff08;LLM&#…

作者头像 李华
网站建设 2026/4/24 15:50:56

【SpringCloud | 第4篇】Gateway网关统一入口

文章目录网关作用工作原理predicates 断言1. 写法2. 断言机制3. 自定义断言filters 过滤器1. RewritePath GatewayFilter Factory&#xff08;路径重写&#xff09;2. 默认 filter3. Global Filter全局过滤器4. 自定义过滤器跨域网关作用 官方文档&#xff1a;https://docs.sp…

作者头像 李华