news 2026/7/31 18:43: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/7/30 6:32:47

情感智能对话系统AI Agent:LLM驱动的深度交互

情感智能对话系统AI Agent&#xff1a;LLM驱动的深度交互关键词&#xff1a;情感智能对话系统、AI Agent、大语言模型&#xff08;LLM&#xff09;、深度交互、自然语言处理摘要&#xff1a;本文聚焦于情感智能对话系统AI Agent&#xff0c;探讨其在大语言模型&#xff08;LLM&…

作者头像 李华
网站建设 2026/7/30 11:24:18

HDFS在大数据分析中的数据访问与处理优化

HDFS在大数据分析中的数据访问与处理优化:从原理到实战的10个关键技巧 一、引言:为什么HDFS的优化是大数据分析的“胜负手”? 1. 一个让大数据工程师崩溃的场景 你有没有遇到过这样的情况? 用Spark处理一个1TB的电商订单数据集,集群有20个节点,每个节点有8核CPU和32GB…

作者头像 李华
网站建设 2026/7/31 5:29:36

自动驾驶—CARLA仿真(8)tutorial demo

测试用例 PythonAPI/examples/tutorial.py 这是一个 基础传感器数据采集示例&#xff0c;演示如何&#xff1a; 在仿真中生成一辆主车并启用自动驾驶为主车挂载一个深度摄像头&#xff08;Depth Camera&#xff09;将摄像头捕获的图像自动保存到磁盘动态调整车辆位置并批量生成…

作者头像 李华
网站建设 2026/7/31 16:35:51

从被动响应到主动赋能:家具行业客服机器人的革新路径

一、传统服务模式下家具行业的核心痛点 家具行业超 62% 的中小商家仍依赖纯人工客服&#xff0c;服务体系滞后于行业需求&#xff1a;家具品类涵盖实木家具、定制柜体、软体沙发等&#xff0c;涉及尺寸适配、材质环保性、安装流程等专业问题&#xff0c;新客服培训周期长达 3 …

作者头像 李华
网站建设 2026/7/29 15:32:41

AI辅助可再生能源发电预测:从气象数据到电力市场

AI辅助可再生能源发电预测&#xff1a;从气象数据到电力市场关键词&#xff1a;AI、可再生能源发电预测、气象数据、电力市场、机器学习算法摘要&#xff1a;本文聚焦于AI在可再生能源发电预测中的应用&#xff0c;深入探讨了如何从气象数据出发&#xff0c;将预测结果应用到电…

作者头像 李华
网站建设 2026/7/30 10:05:04

细节定成败!鹧鸪云让储能配置精准落地

一套“电池逆变器”的储能系统&#xff0c;看似简单却暗藏玄机。不少储能项目收效不及预期&#xff0c;问题往往藏在被忽视的配置细节里。而鹧鸪云储能仿真软件&#xff0c;正是破解这一难题的关键——它以对配置条件“完整性”的深刻洞察&#xff0c;让每一套储能方案都经得起…

作者头像 李华