引言
欢迎来到 MyBatis 的简介与基础使用指南!MyBatis 是一个备受欢迎的 Java 持久层框架,它在 Java 应用程序中实现了简单、灵活、高效的数据库访问。本文将引导您进入 MyBatis 的世界,从了解其基本概念到实际应用中的使用,帮助您轻松入门并开始使用这个强大的框架。
什么是 Mybatis
MyBatis(前身为 iBatis)是一个用于 Java 编程语言的持久层框架。它提供了一种将数据库操作与 Java 对象之间的映射关系定义在 XML 文件或注解中的方式,以简化数据库访问和操作。MyBatis 允许开发者通过配置文件或注解来定义 SQL 语句,并将查询结果映射到 Java 对象,从而实现了对象关系映射(ORM)。这种简洁而直观的方法使得开发者能够更轻松地与数据库交互,而无需编写复杂的 SQL 语句。
MyBatis 的历史与发展
MyBatis 最早由 Clinton Begin 创建,最初称为 iBATIS。它在 2002 年首次发布,随后迅速成为 Java 开发社区中备受欢迎的持久层框架。在 2010 年,iBATIS 的维护权交给了 Apache 软件基金会,随后框架改名为 MyBatis。自那以后,MyBatis 经过不断的改进和发展,已经成为了 Java 持久层框架中的佼佼者。
Mybatis 在 Java 开发的重要性
MyBatis 在 Java 开发中具有重要性,它为 Java 应用程序与数据库之间的数据访问提供了强大的工具和解决方案。Mybatis 在 Java 主要有以下几点重要性:
- 简化数据库访问:MyBatis 允许开发者将数据库查询和操作的细节抽象到配置文件中,使得数据库访问更加简单和直观。开发者不需要编写繁琐的 JDBC 代码,而是可以通过 XML 或注解来定义 SQL 语句和映射关系。
- 对象关系映射(ORM) :MyBatis 实现了对象关系映射,可以将数据库表的数据映射到 Java 对象,使得数据操作更加面向对象。这种方式让开发者可以使用 Java 对象来代表数据库中的数据,从而降低了数据访问的复杂性。
- 灵活性和可定制性:MyBatis 允许开发者编写自己的 SQL 语句,从而更好地控制数据库操作。这种灵活性使得 MyBatis 适用于各种不同的数据库操作需求,包括复杂的查询、存储过程调用等。
- 性能优化:MyBatis 提供了一些性能优化功能,包括缓存机制、批量操作支持等,可以帮助提高数据库访问的性能和效率。
- 事务管理:MyBatis 集成了事务管理,可以确保数据库操作的一致性。开发者可以轻松管理事务,包括提交、回滚等操作。
- 多数据库支持:MyBatis 具有多数据库支持,可以在不同的数据库供应商之间轻松切换。这使得开发者可以在不同的项目中使用相同的代码,而无需修改数据库访问逻辑。
- 社区支持:MyBatis 拥有庞大的开发者社区,提供了丰富的文档、教程和支持。这使得开发者可以快速解决问题,并获取有价值的建议。
- 与其他框架集成:MyBatis 可以与其他常见的 Java 框架(如 Spring)集成,从而更好地满足全栈开发的需求。
MyBatis 的优势
MyBatis作为一种Java持久层框架,具有多重优势,使其在数据库访问中备受欢迎。以下是MyBatis的主要优势:
- 灵活的 SQL 控制:MyBatis 允许您编写自定义 SQL 语句,从而更好地控制数据库操作。这对于需要执行复杂查询或优化 SQL 的应用程序非常有用。
- 零入侵:MyBatis 不强制您的数据对象继承特定的基类或实现特定的接口。这意味着您可以将 MyBatis 轻松集成到现有的数据模型中,而无需对现有代码进行大规模更改。
- 可读性:MyBatis 的 SQL 映射文件是纯文本的 XML,易于阅读和维护。您可以清晰地查看 SQL 语句,了解它们与 Java 对象之间的映射关系。
- 轻量级:MyBatis 是一个轻量级框架,不引入过多的复杂性或不必要的抽象。这使得它在性能上表现出色,并且适用于需要高性能的应用程序。
- ORM 和 SQL 的结合:MyBatis 融合了对象关系映射(ORM)和自定义 SQL 的优点。您可以使用对象映射,同时也可以根据需要编写自定义 SQL。
- 多数据库支持:MyBatis 支持多种数据库,因此您可以在不同的数据库供应商之间切换而无需更改代码。这对于跨平台项目非常有用。
- 事务管理:MyBatis 提供了内置的事务管理,可以轻松管理数据库操作的一致性。
- 社区支持:MyBatis 拥有庞大的开发者社区,提供了广泛的文档、教程和社区支持。这使得开发者可以快速解决问题,并从其他开发者的经验中受益。
- 与其他框架集成:MyBatis 可以与其他常见的 Java 框架(如 Spring)无缝集成,为全栈开发提供了便利。
- 开源和活跃:MyBatis 是一个开源项目,拥有活跃的维护团队,持续改进和适应新的技术和需求。
总的来说,MyBatis 的主要优势在于其灵活性、可读性、性能、轻量级特性以及与 SQL 和 ORM 的结合。这些优势使得 MyBatis 成为了 Java 开发中一个备受欢迎的持久层框架,适用于各种不同规模和类型的应用程序。选择 MyBatis 可以帮助开发者简化数据库访问并提高开发效率。但请注意,选择持久层框架通常还依赖于项目的具体需求和开发团队的偏好。
Mybatis 环境设置
Maven 下载与安装
下载 Maven
- 访问 Maven 官方网站:maven.apache.org/download.cg...
- 在 "Files" 部分,找到最新版本的 Apache Maven 的链接,并点击进入。
- 在下载页面中,找到 "Binary zip archive" 下载链接,通常是一个 ZIP 文件,点击下载。
具体操作如下图所示:
安装 Maven
解压 Maven
下载完成后,将 ZIP 文件解压到您选择的目录。可以选择将 Maven 解压到任何位置,例如 /opt
(Linux/macOS)或 C:
(Windows)。
解压后的目录结构应该如下所示:
Linux 配置环境变量
- 打开终端。
- 编辑
~/.bashrc
或~/.zshrc
文件,具体取决于您使用的 shell。 - 在文件的末尾添加以下行,替换
/path/to/apache-maven-3.x.y
为您解压 Maven 的实际路径:
bash
export M2_HOME=/path/to/apache-maven-3.x.y
export PATH=$M2_HOME/bin:$PATH
- 保存并关闭文件。
- 在终端中运行以下命令,使配置生效:
bash
source ~/.bashrc # 如果您使用的是bash shell,两者二选其一即可
source ~/.zshrc # 如果您使用的是zsh shell
Windows 配置环境变量
-
右键点击 "计算机" 或 "此电脑",然后选择 "属性"。
-
在左侧面板中,选择 "高级系统设置"。
-
在系统属性窗口中,点击 "环境变量" 按钮。
-
在用户变量或系统变量部分,点击 "新建"。
-
输入以下信息:
- 变量名:
M2_HOME
- 变量值:Maven 的安装路径(例如,
C:\apache-maven-3.x.y
)
- 变量名:
-
找到系统变量中的
Path
,点击 "编辑"。 -
在编辑环境变量窗口中,点击 "新建",然后添加
%M2_HOME%\bin
。 -
点击 "确定" 以保存所有更改。
验证 Maven 是否安装成功
基于 Idea 创建 Maven 项目
www.cnblogs.com/giswhw/p/14...
Mybatis 依赖引入
xml
<dependencies>
<!-- MyBatis Core -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.x.y</version> <!-- 使用最新版本 -->
</dependency>
<!-- 数据库驱动,根据您的数据库选择 -->
<dependency>
<groupId>com.h2database</groupId> <!-- 示例:H2数据库 -->
<artifactId>h2</artifactId>
<version>1.4.200</version> <!-- 使用最新版本 -->
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- pg 驱动 -->
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.27</version>
</dependency>
</dependencies>
驱动请按照数据库版本进行对应dev.mysql.com/doc/relnote...
配置 MyBatis 配置文件
MyBatis 的配置文件是一个 XML 文件,通常命名为 mybatis-config.xml
,它包含了MyBatis框架的全局配置信息。这个配置文件指导MyBatis如何工作,包括数据库连接、缓存、映射文件等各种设置。 下面是一个最基本的示例
xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 设置全局的配置信息 -->
<settings>
<!-- 设置实体类与数据库映射大小写 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 配置相关环境信息 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--// mybatis内置了JNDI、POOLED、UNPOOLED三种类型的数据源,其中POOLED对应的实现为org.apache.ibatis.datasource.pooled.PooledDataSource,它是mybatis自带实现的一个同步、线程安全的数据库连接池 一般在生产中,我们会使用c3p0或者druid连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="your_username" />
<property name="password" value="your_password" />
</dataSource>
</environment>
</environments>
<!-- 映射文件的配置 -->
<mappers>
<!--1.必须保证接口名(例如IUserDao)和xml名(IUserDao.xml)相同,还必须在同一个包中-->
<package name="com.use.mapper"/>
<!--2.不用保证同接口同包同名
<mapper resource="com/mybatis/mappers/EmployeeMapper.xml"/>
3.保证接口名(例如IUserDao)和xml名(IUserDao.xml)相同,还必须在同一个包中
<mapper class="com.mybatis.dao.EmployeeMapper"/>
-->
</mappers>
</configuration>
经过上述配置,Mybatis 项目已经配置完毕。
Mybatis 基本使用
创建实体类 User
java
public class User implements Serializable{
private Long id ;
private String userName ;
private Date createTime;
// get/set 方法省略
}
创建 User 的 Mapper 接口
java
public interface UserMapper {
User selectById(Integer id);
// 插入
Integer insertUser(User user);
// 更新
Integer updateUser(User user);
// 删除
Integer deleteUser(Integer id);
}
创建 Mapper 接口对应的 Mapper 映射文件
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.use.mapper.UserMapper">
<!-- Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?-->
<resultMap id="result" type="com.tuling.entity.User">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="user_name" jdbcType="VARCHAR" property="userName"/>
<result column="create_time" jdbcType="DATE" property="createTime"/>
</resultMap>
<select id="selectById" resultMap="result" >
select id,user_name,create_time from t_user
<where>
<if test="id > 0">
and id=#{id}
</if>
</where>
</select>
</mapper>
编写 Mybatis 测试类
java
public class MybatisTest {
SqlSessionFactory sqlSessionFactory;
@Before
public void before(){
// 从 XML 中构建 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 基于StatementId的方式去执行SQL
* <mapper resource="EmpMapper.xml"/>
*/
@Test
public void test() {
try (SqlSession session = sqlSessionFactory.openSession()) {
User user = (User) session.selectOne("cn.use.UserMapper.selectById", 1);
System.out.println(user);
}
}
}
总结
总的来说,MyBatis 是一个强大的 Java 持久层框架,为 Java 开发者提供了一个灵活且强大的工具来管理数据库访问。通过本指南,我们学习了如何配置 MyBatis、编写 SQL 映射文件、执行 SQL 操作等操作。这些基础知识为进一步探索 MyBatis 的高级特性和用法奠定了坚实的基础。无论您是初学者还是有经验的开发者,MyBatis 都是一个值得学习和掌握的工具。