MyBatis 增删改查
引言
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。
在本博客中,我们将通过一系列示例来介绍如何使用 MyBatis 框架结合 MySQL 数据库进行基本的增删改查(CRUD)操作。
环境准备
-
安装 MySQL:确保你已经在你的机器上安装了 MySQL,并创建了一个数据库(例如
mybatis_demo
)以及一个表(例如user
)。 -
添加 MyBatis 依赖:如果你使用 Maven 构建项目,可以在
pom.xml
中添加 MyBatis 和 MySQL JDBC 驱动的依赖。<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies>
-
配置 MyBatis:在
src/main/resources
目录下创建mybatis-config.xml
文件,配置数据库连接信息和 MyBatis 的相关设置。<?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/mybatis_demo?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/UserMapper.xml"/> </mappers> </configuration>
创建 User 实体类
在 Java 项目中,创建一个简单的 User
实体类来映射数据库中的 user
表。
public class User {
private Integer id;
private String name;
private Integer age;
// 省略构造方法、getter 和 setter
}
编写 Mapper 接口和 XML
-
创建 Mapper 接口:定义 User 的操作方法。
public interface UserMapper { User selectUserById(Integer id); int insertUser(User user); int updateUser(User user); int deleteUser(Integer id); }
-
编写 Mapper XML:在
src/main/resources
目录下创建UserMapper.xml
,编写 SQL 语句。<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.mybatis.example.UserMapper"> <select id="selectUserById" resultType="org.mybatis.example.User"> SELECT id, name, age FROM user WHERE id = #{id} </select> <insert id="insertUser" parameterType="org.mybatis.example.User"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="org.mybatis.example.User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper>
使用 MyBatis 进行 CRUD 操作
在 Java 代码中,你可以通过 MyBatis 的 SqlSession
来执行 Mapper 接口中定义的方法。
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
// 查询
User user = mapper.selectUserById(1);
System.out.println(user);
// 插入
User newUser = new User();
newUser.setName("New User");
newUser.setAge(30);
mapper.insertUser(newUser);
session.commit(); // 不要忘记提交事务
// 更新
newUser.setName("Updated User");
mapper.updateUser(newUser);
session.commit();
// 删除
mapper.deleteUser(newUser.getId());
session.commit();
}
总结
以上示例展示了如何使用 MyBatis 框架结合 MySQL 数据库进行基本的增删改查操作。通过定义 Mapper 接口和 XML 映射文件,MyBatis 使得数据库操作变得简洁而高效。在实际项目中,可以根据需要扩展 Mapper 接口和 XML 文件,实现更复杂的业务逻辑。