news 2026/3/27 17:31:16

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/3/23 20:11:43

Laravel + Vue3 前后端分离开源后台管理框架 CatchAdmin v5.0 Beta 发布

Laravel Vue3 前后端分离开源后台管理框架 CatchAdmin v5.0 Beta 发布 介绍 CatchAdmin 是一款基于 Laravel12 与 Vue3&#xff08;Element Plus&#xff09;的前后端分离开源后台管理系统框架。Laravel 社区也有许多非常优秀的后台管理系统&#xff0c;例如 Nova&#xff0…

作者头像 李华
网站建设 2026/3/23 22:12:20

构建可靠的AIGC创作系统:从单点实验到可重复生产

引言&#xff1a;AIGC创作的系统化转型在过去一年中&#xff0c;我亲身经历了从AIGC工具探索者到系统性创作者的转型。本文将分享我构建可重复、高质量创作系统的实践经验&#xff0c;涵盖技术架构设计、质量保障机制和效率优化策略。所有经验均基于实际项目验证&#xff0c;旨…

作者头像 李华
网站建设 2026/3/24 9:29:44

自动驾驶—CARLA仿真(11)bounding_boxes demo

&#x1f4cc; 测试用例 PythonAPI/examples/bounding_boxes.py 这是一个 2D/3D 边界框&#xff08;Bounding Box&#xff09;生成与可视化系统&#xff0c;用于&#xff1a; 在仿真中生成大量 NPC 车辆通过 RGB 摄像头 实例分割摄像头 获取场景数据实时计算并绘制 2D/3D 边…

作者头像 李华
网站建设 2026/3/27 14:33:16

2026资产革命预言:NATS与WEEX正在构建的“数字文明新大陆“

引言&#xff1a;当故宫文物遇见区块链——RWA重构全球资产版图2025年10月30日&#xff0c;一场名为《NATS上市&#xff1a;全球首枚中国主权RWA的东方文艺复兴》的Twitter Space讨论引发跨时区热议。这场由WEEX交易所与NATS项目联合发起的对话&#xff0c;吸引了来自新加坡、迪…

作者头像 李华
网站建设 2026/3/26 20:22:34

6、深入探索自定义 Widget 的创建与应用

深入探索自定义 Widget 的创建与应用 1. Widget 概述 Widgets 是构成应用程序的各种可视化元素的统称,像按钮、标题栏、文本框、复选框等都属于 Widgets。在使用 Widgets 创建用户界面时,存在两种思路:一是坚持使用标准 Widgets;二是大胆创建自己的 Widgets,而 Qt 对这两…

作者头像 李华
网站建设 2026/3/22 17:37:28

拆解 AI + 低代码:为什么它是企业开发的下一个十年?

目录 一、技术耦合&#xff1a;AI如何重构低代码的开发逻辑&#xff1f; 1. 自然语言驱动&#xff1a;打破“业务-IT”的翻译壁垒 2. 智能组件与流程生成&#xff1a;从“拖拽配置”到“主动推荐” &#xff08;1&#xff09;智能表单与字段推荐 &#xff08;2&#xff09…

作者头像 李华