• 实战系列(三)| Mybatis和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 案例,用于演示用户信息的增删改查:

      
    <configuration>  
       <environments default="development">  
           <environment id="development">  
               <transactionManager type="JDBC"/>  
               <dataSource type="POOLED">  
                   <property name="driver" value="com.mysql.jdbc.Driver"/>  
                   <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"/>  
                   <property name="username" value="root"/>  
                   <property name="password" value="password"/>  
               dataSource>  
           environment>  
       environments>  
       <mappers>  
           <mapper resource="com/example/mapper/UserMapper.xml"/>  
       mappers>  
    configuration>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
      
    <mapper namespace="com.example.mapper.UserMapper">  
       <insert id="insertUser" parameterType="com.example.entity.User">  
           INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email})  
       insert>  
         
    mapper>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    // Mapper 接口  
    public interface UserMapper {  
       int insertUser(User user);  
       // 其他方法  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    // DAO 接口  
    public interface UserDao {  
       int insertUser(User user);  
       // 其他方法  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    // 业务逻辑层  
    @Service  
    public class UserService {  
       @Autowired  
       private UserDao userDao;  
       public int insertUser(User user) {  
           return userDao.insertUser(user);  
       }  
       // 其他方法  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 创建一个 Mapper 接口 UserMapper.java:
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    public interface UserMapper extends BaseMapper<User> {  
    }
    
    • 1
    • 2
    • 3
    1. 创建一个 Service 接口 UserService.java:
    import com.baomidou.mybatisplus.extension.service.IService;
    public interface UserService extends IService<User> {  
    }
    
    • 1
    • 2
    • 3
    1. 创建一个 ServiceImpl 类 UserServiceImpl.java,实现 Service 接口:
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;  
    import org.springframework.stereotype.Service;
    @Service  
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    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<User> 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    1. 配置 MyBatisPlus 在 Spring Boot 项目中:
      
    <configuration>  
       <extensions>  
           <extension plugin-id="mybatis-plus" interceptor="com.baomidou.mybatisplus.extension.MybatisPlusInterceptor"/>  
       extensions>  
    configuration>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
      
    <mybatis-plus-config>  
       <mapper-locations>  
           <mapper-location resource="classpath:mapper/*Mapper.xml"/>  
       mapper-locations>  
       <type-aliases>  
           <package name="com.example.entity"/>  
       type-aliases>  
       <global-config>  
           <db-config>  
               <logic delete-flag="true"/>  
               <logic not-delete-flag="false"/>  
           db-config>  
           <date-format>yyyy-MM-dd HH:mm:ssdate-format>  
           <null-type-handler>com.baomidou.mybatisplus.core.handlers.空字符串类型处理器null-type-handler>  
       global-config>  
    mybatis-plus-config>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    以上代码演示了如何使用 MyBatisPlus 实现用户信息的增删改查。在这个案例中,我们使用了 MyBatisPlus 提供的注解和插件,简化了 MyBatis 的开发。

  • 相关阅读:
    Linux下的 /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 笔记2208300059
    Java如何解决浮点数计算不精确问题
    华纳云:如何搭建Nginx服务器做到负载均衡
    出门在外保护好自己
    【单片机】【数码管】数码管显示
    redis
    使用Perl和WWW::Mechanize库编写
    uniapp 小程序 多张图片生成海报以及下载海报
    [附源码]计算机毕业设计JAVA鑫地酒店酒水库存管理系统论文
    Flask像Jenkins一样构建自动化测试任务
  • 原文地址:https://blog.csdn.net/superdangbo/article/details/132812107