小工具知识网

当前位置: 首页 > 行业知识 > 实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码

行业知识

实战系列(三)| Mybatis和MybatisPlus区别,包含详细代码

2026-11-04 21:23:26 来源:互联网转载

目录

  • 1. 底层框架:
  • 2. 代码差异:
  • 3. 使用差异:
  • 4. 案例代码分析:
    • 4.1 MyBatis
    • 4.2 MyBatisPlus

      MyBatis 和 MyBatisPlus 都是基于 MyBatis 的扩展库,用于简化 MyBatis 的开发。MyBatisPlus 是在 MyBatis 的基础上进行封装,提供了一套通用的 CRUD 操作接口,而 MyBatis 是一个底层的持久层框架。

      1. 底层框架:

      MyBatis 是一个持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原生映射。

      MyBatisPlus 是一个基于 MyBatis 的扩展库,它提供了一套通用的 CRUD 操作接口,自动生成 SQL 语句,并提供了丰富的查询条件构造器等功能。MyBatisPlus 主要使用了注解进行配置和映射。

      2. 代码差异:

      MyBatis 的代码主要涉及到以下几个部分:

      • MyBatis 的配置文件(mybatis-config.xml),用于配置数据源、映射文件等。
      • 映射文件(Mapper.xml),用于定义 SQL 语句和结果映射。
      • Mapper 接口,用于定义与映射文件对应的方法。
      • DAO 接口,用于封装 Mapper 接口,提供统一的 CRUD 方法。

        MyBatisPlus 的代码主要涉及到以下几个部分:

      • MyBatisPlus 的配置文件(mybatis-plus-config.xml),用于配置数据源、分页插件等。
      • 实体类(Entity),用于定义数据库表对应的实体类。
      • Mapper 接口,用于定义与数据库表对应的方法。
      • Service 接口,用于封装 Mapper 接口,提供统一的 CRUD 方法。
      • ServiceImpl 类,实现 Service 接口,调用 Mapper 接口进行数据库操作。

        3. 使用差异:

        MyBatis 需要手动编写 SQL 语句和结果映射,但提供了高度的定制化能力。MyBatis 的优点是可以根据实际需求灵活编写 SQL 语句,但缺点是编写映射文件和手动设置参数比较繁琐。

        MyBatisPlus 提供了一套通用的 CRUD 操作接口,自动生成 SQL 语句。MyBatisPlus 的优点是简化了 MyBatis 的开发,提高了开发效率,但缺点是定制化能力较差,对于复杂的 SQL 语句可能无法满足需求。

        4. 案例代码分析:

        4.1 MyBatis

        以下是一个简单的 MyBatis 案例,用于演示用户信息的增删改查:

                                                                                                                                                                        
                        INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email})              
        // Mapper 接口  public interface UserMapper {     int insertUser(User user);     // 其他方法  }
        // DAO 接口  public interface UserDao {     int insertUser(User user);     // 其他方法  }
        // 业务逻辑层  @Service  public class UserService {     @Autowired     private UserDao userDao;     public int insertUser(User user) {         return userDao.insertUser(user);     }     // 其他方法  }

        4.2 MyBatisPlus

        以下是一个简单的 MyBatisPlus 案例,用于演示用户信息的增删改查:

        1. 首先,创建一个实体类(Entity)User.java:
        public class User {     private Long id;     private String username;     private String password;     private String email;   // 省略 getter 和 setter 方法  }
        1. 创建一个 Mapper 接口 UserMapper.java:
        import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper {  }
        1. 创建一个 Service 接口 UserService.java:
        import com.baomidou.mybatisplus.extension.service.IService;public interface UserService extends IService {  }
        1. 创建一个 ServiceImpl 类 UserServiceImpl.java,实现 Service 接口:
        import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;  import org.springframework.stereotype.Service;@Service  public class UserServiceImpl extends ServiceImpl implements UserService {  }
        1. 创建一个 Controller 类 UserController.java,处理 HTTP 请求:
        import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.web.bind.annotation.*;import java.util.List;@RestController  @RequestMapping("/user")  public class UserController {   @Autowired     private UserService userService;   @PostMapping     public String createUser(@RequestBody User user) {         userService.save(user);         return "User created";     }   @GetMapping("/{id}")     public User getUser(@PathVariable Long id) {         return userService.getById(id);     }   @GetMapping     public List getUsers() {         return userService.list();     }   @PutMapping("/{id}")     public String updateUser(@PathVariable Long id, @RequestBody User user) {         user.setId(id);         userService.updateById(user);         return "User updated";     }   @DeleteMapping("/{id}")     public String deleteUser(@PathVariable Long id) {         userService.removeById(id);         return "User deleted";     }  }
        1. 配置 MyBatisPlus 在 Spring Boot 项目中:
                                 
                                                                                                          yyyy-MM-dd HH:mm:ss         com.baomidou.mybatisplus.core.handlers.空字符串类型处理器         

上一篇:怎么清理邮件服务器?

下一篇:怎么管理100台服务器?