MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 的设计哲学是“约定优于配置”,这意味着你只需要在 XML 文件或注解中配置你想要的行为,而 MyBatis 会用默认值来填补其余的部分。这使得 MyBatis 代码更加简洁和易于维护。
环境搭建
1. 安装 JDK
首先,确保你的开发环境已经安装了 Java 开发工具包(JDK)。MyBatis 需要 JDK 1.6 或更高版本。
2. 创建 Maven 项目
使用 Maven 可以方便地管理依赖和构建过程。创建一个新的 Maven 项目,并添加以下依赖到 pom.xml 文件中:
<dependencies>
<!-- MyBatis 核心库 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
3. 配置数据源
在 resources 目录下创建 mybatis-config.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testdb?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
</configuration>
创建 Mapper 接口
创建一个 Mapper 接口,定义你需要执行的操作:
public interface UserMapper {
User getUserById(Integer id);
int addUser(User user);
}
创建 Mapper XML 文件
为每个 Mapper 接口创建一个对应的 XML 文件,用于配置 SQL 语句和映射关系:
<?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.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
使用 MyBatis
最后,你可以使用 MyBatis 的 SqlSessionFactory 来获取 SqlSession,然后使用 SqlSession 来执行 SQL 语句:
public class Main {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
User newUser = new User();
newUser.setName("张三");
newUser.setAge(20);
int result = mapper.addUser(newUser);
System.out.println("插入结果:" + result);
session.commit();
}
}
}
这样,你就完成了 MyBatis 的入门。希望这篇文章能帮助你更好地理解 MyBatis 的基本用法和概念。在实际项目中,你可以根据自己的需求进行扩展和优化。
