news 2026/6/15 15:23:45

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/14 13:15:51

放弃主灯后,我的家反而更亮眼了

放弃主灯后&#xff0c;我的家反而更亮眼了“照亮一个空间&#xff0c;核心不是‘一灯定乾坤’的宏大主灯&#xff0c;而是‘见光不见灯’的精密光学布局。放弃了那盏霸占客厅C位的大吊灯&#xff0c;才是真正高级感照明的开始。”今天&#xff0c;我们来深入探讨一个正在成为主…

作者头像 李华
网站建设 2026/6/15 11:04:16

最新版本iOS系统设备管理功能全面指南

深入了解最新版本iOS系统中的设备管理功能&#xff0c;包括设备信任认证、应用与数据管理、远程查找与锁定等&#xff0c;助您提升设备安全性与使用体验。 在科技日新月异的今天&#xff0c;iOS系统作为苹果设备的核心操作系统&#xff0c;每一次更新都牵动着亿万用户的心。今天…

作者头像 李华
网站建设 2026/6/15 0:18:42

AI洪流下,大学生如何锚定未来:一份全面成长指南

人工智能&#xff08;AI&#xff09;不再是科幻小说中的概念&#xff0c;而是已经深度融入我们生活、学习和工作的强大力量。对于正值象牙塔中的大学生而言&#xff0c;这既是前所未有的机遇&#xff0c;也是转型升级的挑战。面对AI的洪流&#xff0c;大学生们应该如何装备自己…

作者头像 李华
网站建设 2026/6/15 11:24:31

28.封装map set(上)

实例化rbtree时候第二个模版参数决定了红黑树里面节点里面value field存了什么为什么map set 红黑树都是key valuetype&#xff0c;set中rbtree实例化的时候key valuetype都是keymap那边key是key keyvalue是个pair。map set第二个模版参数决定了红黑树第二个模版参数存了key还是…

作者头像 李华