本文介绍: 简单来说,MyBatis Plus就是MyBatis的加强版,MyBatis Plus是在MyBatis基础上进行了功能扩展和增强,如果你会用Mybatis,那么对于MyBatis Plus使用也是一看就会的。

前言

简单来说,MyBatis Plus就是MyBatis的加强版,MyBatis Plus是在MyBatis基础上进行了功能扩展和增强,如果你会用Mybatis,那么对于MyBatis Plus的使用也是一看就会的。

共同点

MyBatis和MyBatis Plus都是基于Java的持久框架用于简化数据库操作

各自的优势

MyBatis

  1. XML配置驱动:MyBatis以XML文件配置SQL语句数据库映射开发者需要手动编写SQL映射文件

  2. 基本功能:提供SQL执行结果映射参数处理功能,通过XML文件注解配置SQL语句与Java方法映射

  3. 灵活性开发者对SQL语句有更高的控制权,可以优化定制SQL语句,适应各种复杂的查询需求

MyBatis Plus

  1. 代码生成器:MyBatis Plus提供了代码生成器功能可以根据数据库自动生成Entity、Mapper、Service、Controller等代码,加速开发过程

  2. 简化操作:内置了通用的CRUD方法,例如insertupdatedelete操作,简化了数据操作

  3. 增强功能:提供了更多方便的方法和功能,如分页、条件构造器、Lambda表达式查询等,减少了一些重复的代码编写,提高开发效率。

  4. 集成Spring Boot:天然地集成了Spring Boot,使得在Spring Boot项目中更加便捷地使用

  5. Wrapper查询:支持Wrapper的查询方式,允许使用条件构造器进行动态SQL查询,简化了复杂查询条件的拼接。

各自的代码示例

好的,下面是一个简单示例展示使用MyBatis和MyBatis Plus进行数据库操作区别

MyBatis 示例

实体类 User.java
@Data
public class User {
    private Long id;
    private String username;
    private String password;
    
}
MyBatis Mapper XML 配置文件 UserMapper.xml
<!-- 查询用户 --&gt;
<select id="getUserById" parameterType="long" resultType="User">
    SELECT id, username, password FROM user WHERE id = #{id}
</select>
MyBatis Mapper 接口 UserMapper.java
public interface UserMapper {
    User getUserById(Long id);
}
MyBatis 使用
public class MyBatisExample {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            User user = userMapper.getUserById(1L);
            System.out.println(user.getUsername());
        }
    }
}

MyBatis Plus 示例

实体类 User.java
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
@Data
public class User {
    private Long id;
    private String username;
    private String password;

}
MyBatis Plus Mapper 接口 UserMapper.java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
}
MyBatis Plus 使用
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public class MyBatisPlusExample {
    public static void main(String[] args) {
        try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            
            // 查询用户
            User user = userMapper.selectById(1L);
            System.out.println(user.getUsername());
            
            // 使用Wrapper进行查询
            QueryWrapper<User> wrapper = new QueryWrapper<>();
            wrapper.eq("username", "十七号程序猿");
            List<User> userList = userMapper.selectList(wrapper);
            // 输出用户列表
            userList.forEach(u -> System.out.println(u.getUsername()));
        }
    }
}

这个示例展示了MyBatis和MyBatis Plus的基本用法:
在MyBatis中,需要编写XML配置文件定义SQL语句和Mapper接口,而MyBatis Plus则更为简洁,只需定义实体类和继承自BaseMapper的Mapper接口即可使用内置的CRUD方法。此外,MyBatis Plus提供了条件构造器QueryWrapper,可以方便地构建动态查询条件

区别总结

  1. 开发效率: MyBatis Plus相对于MyBatis提供了更多的内置功能和方法,能够提高开发效率,尤其是对于通用的数据库操作

  2. 配置操作: MyBatis Plus减少了手动编写SQL和Mapper文件需求,提供了更多便捷的方法来执行数据库操作,而MyBatis更加灵活,需要开发者手动处理更多的SQL和映射配置

  3. 功能扩展: MyBatis Plus在MyBatis的基础上提供了更多的功能扩展,使得开发者能够更快速地完成开发任务

如何选择

这个没有一个固定的答案。并不是说MyBatis Plus一定比MyBatis要好。选择使用哪个取决于项目需求团队偏好,对于需要更多内置功能、简化操作提高开发效率的项目,MyBatis Plus可能更适合。而对于需要更高度定制和对SQL控制要求较高的项目,则MyBatis可能更合适。

扩展:MyBatis Plus的常用注解

MyBatis Plus提供了多种注解,用于简化数据库操作和增加灵活性。以下是一些常用的注解:

实体类注解:

  1. @TableName:标识实体类对应的数据库表名,用于指定实体类与数据库表的映射关系。

    @TableName("user")
    public class User {
        //...
    }
    
  2. @TableField指定实体类字段数据库字段映射关系,用于主键字段

    public class User {
        @TableField("username")
        private String name;
        //...
    }
    

主键注解:

  1. @TableId:标识主键字段,并指定主键生成策略数据库主键字段名称

    public class User {
        @TableId(value = "id", type = IdType.AUTO)
        private Long userId;
        //...
    }
    

Mapper接口方法注解:

  1. @Mapper:在Mapper接口上使用,标识该接口是MyBatis Plus的Mapper接口。

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
        //...
    }
    
  2. @Select@Insert@Update@Delete:在自定义SQL方法上使用,用于映射SQL操作。

    @Select("SELECT * FROM user WHERE username = #{username}")
    User findByUsername(String username);
    

其他注解:

  1. @Version用于乐观锁的字段标识,在更新操作时用于控制并发

    public class User {
        @Version
        private Integer version;
        //...
    }
    

这些注解能够简化MyBatis Plus的使用,并且提供了更多的灵活性,减少了开发者编写重复代码的工作。根据实际情况,使用这些注解可以更方便地进行数据库操作。

原文地址:https://blog.csdn.net/qq_39327650/article/details/134679212

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_6603.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注