mybatisplus迁移为传统的mybatis
时间: 2025-06-18 21:54:31 浏览: 11
### MyBatisPlus 迁移到传统 MyBatis 的方法与指南
将 MyBatisPlus (MP) 项目迁移到传统 MyBatis 是一项需要仔细规划的任务。MyBatisPlus 提供了对 MyBatis 的封装和增强功能,包括代码生成器、分页插件等特性[^1]。然而,在某些场景下,可能需要回归到更基础的 MyBatis 实现以满足特定需求。以下是迁移过程中涉及的关键点:
#### 1. 移除 MyBatisPlus 依赖
在项目的 `pom.xml` 或 `build.gradle` 文件中,移除 MyBatisPlus 相关的依赖,并替换为纯 MyBatis 的依赖。
对于 Maven 项目:
```xml
<!-- 移除 MyBatisPlus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>x.x.x</version>
</dependency>
<!-- 添加 MyBatis 依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>x.x.x</version>
</dependency>
```
对于 Gradle 项目:
```gradle
// 移除 MyBatisPlus 依赖
implementation 'com.baomidou:mybatis-plus-boot-starter:x.x.x'
// 添加 MyBatis 依赖
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:x.x.x'
```
#### 2. 替换自动代码生成逻辑
MyBatisPlus 提供了强大的代码生成工具,可以快速生成实体类、Mapper 接口和 XML 文件。而在传统 MyBatis 中,这些内容需要手动编写或通过其他工具生成。
- **实体类**:保留现有实体类,确保字段与数据库表结构一致。
- **Mapper 接口**:将 MyBatisPlus 的通用 Mapper 替换为自定义的 Mapper 接口,并实现具体的方法。
- **XML 文件**:为每个 Mapper 接口编写对应的 XML 文件,定义 SQL 查询语句。
例如,一个简单的 Mapper 接口及其 XML 文件如下所示:
```java
public interface UserMapper {
List<User> selectAll();
}
```
```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.example.mapper.UserMapper">
<select id="selectAll" resultType="com.example.model.User">
SELECT * FROM users
</select>
</mapper>
```
#### 3. 处理分页逻辑
MyBatisPlus 提供了内置的分页插件,而传统 MyBatis 需要手动实现分页逻辑。可以通过以下方式完成分页:
- 在 SQL 查询中显式添加 `LIMIT` 和 `OFFSET` 子句。
- 使用 MyBatis 的第三方分页插件(如 PageHelper)来简化分页操作。
示例 SQL 查询:
```sql
SELECT * FROM users LIMIT #{pageSize} OFFSET #{offset}
```
#### 4. 替换通用 CRUD 方法
MyBatisPlus 提供了通用的 CRUD 方法(如 `insert`, `deleteById`, `updateById` 等),在传统 MyBatis 中需要手动实现这些方法。可以在 Mapper 接口中定义相应的 SQL 方法,或者通过动态 SQL 来简化开发。
例如,插入操作的 Mapper 方法和 XML 定义如下:
```java
int insertUser(User user);
```
```xml
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
```
#### 5. 测试与验证
迁移完成后,需要进行全面的测试以确保功能一致性。重点关注以下方面:
- 数据查询是否正确。
- 分页逻辑是否正常工作。
- 插入、更新和删除操作是否符合预期。
---
### 示例代码
以下是一个完整的迁移示例,展示如何从 MyBatisPlus 转换为传统 MyBatis:
```java
// 原始 MyBatisPlus Mapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
// 转换后的传统 MyBatis Mapper
public interface UserMapper {
List<User> selectAll();
int insertUser(User user);
int updateUser(User user);
int deleteUserById(Long id);
}
```
对应的 XML 文件:
```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.example.mapper.UserMapper">
<select id="selectAll" resultType="com.example.model.User">
SELECT * FROM users
</select>
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
<update id="updateUser" parameterType="com.example.model.User">
UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="Long">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
```
---
阅读全文
相关推荐


















