news 2026/6/10 14:58:43

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/6/10 14:27:03

自动驾驶—CARLA仿真(10)tutorial_gbuffer demo

测试用例 PythonAPI/examples/tutorial_gbuffer.py 这是一个 高级传感器数据采集示例&#xff0c;用于&#xff1a; 生成一辆自动驾驶车辆挂载高分辨率 RGB 摄像头同时保存最终渲染图像&#xff08;Final Color&#xff09;和所有 GBuffer 纹理 适用于 计算机视觉研究、神经渲染…

作者头像 李华
网站建设 2026/6/9 15:07:07

揭秘大公开咯!提示工程架构师助力Agentic AI技术创新展翅高飞

揭秘大公开咯&#xff01;提示工程架构师助力Agentic AI技术创新展翅高飞 一、引入与连接&#xff1a;当AI从“工具人”进化为“思考者” 清晨7点&#xff0c;你揉着眼睛拿起手机&#xff0c;对智能助手说&#xff1a;“帮我规划下周去三亚的旅行&#xff0c;要兼顾海边放松和美…

作者头像 李华
网站建设 2026/6/10 14:29:31

哪些Agent工具适合中小企业?从选型到落地,一篇吃透

“去年砸20万上的智能系统&#xff0c;现在成了摆设——技术人员招不来也留不住&#xff0c;后台操作没人会&#xff0c;客户咨询还是得靠人工硬扛。”在近期一场中小企业数字化转型沙龙上&#xff0c;做机械配件的王总一开口&#xff0c;就戳中了满堂老板的痛点。这种“投入打…

作者头像 李华
网站建设 2026/6/10 14:25:18

交易所系统2.0:量子加密+AI风控如何重构数字资产安全边界

引言&#xff1a;当交易所宕机成为历史——区块链基础设施的2.0时代2025年10月15日&#xff0c;全球最大加密货币交易所CoinX因DDoS攻击导致系统瘫痪3小时&#xff0c;直接损失超2.7亿美元。而就在同一时刻&#xff0c;中国某新兴交易所"ChainX"凭借自主研发的量子加…

作者头像 李华
网站建设 2026/6/10 14:16:32

美创AI灾备专家:引领灾备领域迈入“智能化”时代

在数字化飞速发展的今天&#xff0c;系统架构日趋复杂&#xff0c;灾难场景愈发难以预测。传统灾备管理高度依赖人工操作&#xff0c;不仅效率低下&#xff0c;更潜藏着误操作与响应延迟的风险。随着人工智能技术日益成熟&#xff0c;灾备领域正迎来一场深刻的智能化变革。美创…

作者头像 李华
网站建设 2026/6/10 14:33:50

小程序VUE

goNext() {// 方法1: 直接使用微信小程序APIwx.switchTab({url: /pages/mine/index})// 如果 mine/index 是 tabbar 页面&#xff0c;必须用 switchTab// 如果不是 tabbar 页面&#xff0c;可以用 navigateTo }

作者头像 李华