web应用开发一课一得

选择主题:MyBatis与MyBatis-Plus实现及区别

目录

选择主题:MyBatis与MyBatis-Plus实现及区别

一、引言

二、MyBatis基本实现

三、MyBatis-Plus基本实现

四、MyBatis与MyBatis-Plus的区别

使用MyBatis-Plus进行数据库操作

五、MyBatis和MyBatis-Plus的优缺点

MyBatis的优点

MyBatis的缺点

MyBatis-Plus的优点

MyBatis-Plus的缺点

六、SpringBoot集成MyBatis和MyBatis-Plus

七、总结


一、引言

MyBatis和MyBatis-Plus是两个流行的Java持久层框架,它们都用于将对象关系映射(ORM)模型映射到数据库。在这篇博客中,我们将介绍MyBatis和MyBatis-Plus的基本实现以及它们之间的区别。同时,我们还将探讨如何将它们与SpringBoot集成。

如果有其他疑问请参考:https://www.bilibili.com/read/cv6218166/

二、MyBatis基本实现

MyBatis是一个开源的持久层框架,它允许你直接使用SQL语句进行数据库操作,而不需要编写大量的JDBC代码。MyBatis通过映射文件将SQL语句与Java对象进行映射,从而实现了对象关系映射。

在MyBatis中,你需要编写SQL映射文件,并在Java代码中调用相应的SQL语句。映射文件中的SQL语句可以根据数据库表的结构进行编写,从而实现数据的增删改查操作。

  1. SQL映射文件

MyBatis使用XML或注解方式定义SQL映射文件,将SQL语句与Java对象进行映射。开发者需要手动编写SQL语句,并通过MyBatis提供的API执行SQL查询和更新操作。

     2.配置文件

MyBatis需要配置数据源、事务管理器等参数,以便与数据库进行交互。这些配置通常在Spring的配置文件中完成。

      3.代码实现

使用MyBatis时,开发者需要编写相应的Java代码来调用SQL映射文件中的SQL语句。例如,使用@Select注解在Java代码中指定SQL查询语句,并返回相应的Java对象。

举例说明

  1. 创建User实体类:

    public class User {  
        private int id;  
        private String name;  
        private int age;  
      
        // 省略getter和setter方法  
    }

  2. 创建UserMapper接口:

    public interface UserMapper {  
        @Select("SELECT * FROM User WHERE id = #{id}")  
        User getUserById(int id);  
    }

  3. 在SpringBoot中配置数据源和MyBatis:

在application.properties文件中添加以下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase  
spring.datasource.username=root  
spring.datasource.password=password  
spring.datasource.driver-class-name=com.mysql.jdbc.Driver  
spring.datasource.type=com.zaxxer.hikari.HikariDataSource  
mybatis.mapper-locations=classpath:mapper/*.xml

4.创建UserMapper的XML映射文件:

在src/main/resources/mapper目录下创建UserMapper.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.demo.mapper.UserMapper">  
    <select id="getUserById" resultType="com.example.demo.entity.User">  
        SELECT * FROM User WHERE id = #{id}  
    </select>  
</mapper>

5.在Java代码中调用UserMapper的方法:

在需要使用UserMapper的地方,注入UserMapper实例,并调用getUserById方法获取用户信息。例如:

@Autowired  
private UserMapper userMapper;  
  
public void getUserById(int id) {  
    User user = userMapper.getUserById(id);  
    System.out.println(user);  
}

三、MyBatis-Plus基本实现

MyBatis-Plus是MyBatis的一个增强工具包,它提供了更多的功能和便利性。MyBatis-Plus在MyBatis的基础上进行了扩展,包括自动生成代码、支持ActiveRecord模式、分页插件等。

在MyBatis-Plus中,你可以通过注解的方式进行SQL语句的编写,而不需要编写映射文件。同时,MyBatis-Plus还提供了多种数据库操作方法,如插入、更新、删除等,以及事务管理功能。

  1.注解方式

MyBatis-Plus提供了一系列注解,使得开发者可以更加方便地编写SQL语句。例如,@Select注解可以直接在实体类的方法上使用,用于指定SQL查询语句。

  2.自动生成代码

MyBatis-Plus提供了自动生成代码的功能,可以快速生成CRUD操作的方法。开发者只需要在实体类上添加相应的注解,就可以自动生成相应的CRUD方法。

  3.分页插件

MyBatis-Plus提供了分页插件,可以方便地进行数据的分页查询。开发者只需要在SQL映射文件中添加相应的分页插件配置,就可以实现数据的分页查询。

简单例子

  1. 创建User实体类:

    public class User {  
        private Long id;  
        private String name;  
        private Integer age;  
      
        // 省略getter和setter方法  
    }

  2. 创建UserMapper接口:

    @Mapper  
    public interface UserMapper extends BaseMapper<User> {  
    }

  3. 在SpringBoot中配置数据源和MyBatis-Plus:在application.properties文件中添加以下配置:
    spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase  
    spring.datasource.username=root  
    spring.datasource.password=password  
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver  
    spring.datasource.type=com.zaxxer.hikari.HikariDataSource  
    mybatis-plus.mapper-locations=classpath:mapper/*.xml

  4. 在需要使用MyBatis-Plus的地方,注入UserMapper实例,并调用相应的CRUD方法。例如:

    @Autowired  
    private UserMapper userMapper;  
      
    public void createUser(User user) {  
        userMapper.insert(user);  
    }  
      
    public void updateUser(User user) {  
        userMapper.updateById(user);  
    }  
      
    public void deleteUser(Long id) {  
        userMapper.deleteById(id);  
    }

四、MyBatis与MyBatis-Plus的区别

  1. 代码量:MyBatis需要编写SQL映射文件和Java代码,而MyBatis-Plus可以通过注解的方式简化代码量。
  2. 开发效率:MyBatis-Plus提供了自动生成代码的功能,可以快速生成CRUD操作的方法,从而提高开发效率。
  3. 功能丰富度:MyBatis-Plus在MyBatis的基础上增加了更多的功能,如分页插件、乐观锁等。
  4. 学习成本:对于熟悉MyBatis的开发者来说,学习MyBatis-Plus需要一定的成本。然而,对于初学者来说,使用MyBatis-Plus可以更快速地上手。

以下是一个简单的例子,说明MyBatis和MyBatis-Plus在实现方式上的区别:假设我们有一个名为"User"的表,其中包含"id"、"name"和"age"三个字段。使用MyBatis进行数据库操作:

  1. 编写SQL映射文件:创建一个名为"UserMapper.xml"的映射文件,其中包含查询、插入、更新和删除等SQL语句。例如,查询所有用户的SQL语句可以如下:

    <select id="selectUsers" resultType="User">  
        SELECT * FROM User  
    </select>
  2. 编写Java代码:在Java代码中,你需要编写相应的接口和实现类,通过调用SQL语句实现数据库操作。例如,查询所有用户的Java代码可以如下:

    @Mapper  
    public interface UserMapper {  
        List<User> selectUsers();  
    }
  3. 配置数据源:在SpringBoot中配置数据源,指定数据库连接信息。
使用MyBatis-Plus进行数据库操作

注解方式编写SQL语句:在Java代码中,你可以使用注解的方式编写SQL语句,而不需要编写映射文件。例如,查询所有用户的Java代码可以如下:

@Select("SELECT * FROM User")  
List<User> selectUsers();
  1. 自动生成代码:MyBatis-Plus提供了自动生成代码的功能,可以快速生成CRUD操作的方法。例如,通过在实体类上添加注解,可以自动生成对应的CRUD方法。

  2. 分页插件:MyBatis-Plus提供了分页插件,可以实现数据的分页查询。例如,查询前10个用户的Java代码可以如下:

    @Select("SELECT * FROM User LIMIT #{pageSize} OFFSET #{offset}")  
    List<User> selectUsers(@Param("pageSize") int pageSize, @Param("offset") int offset);

  3. 事务管理:MyBatis-Plus提供了事务管理功能,可以方便地进行事务控制。例如,在需要执行多个数据库操作的情况下,可以使用事务管理功能确保操作的原子性。
  4. 配置数据源:同样需要在SpringBoot中配置数据源,指定数据库连接信息。

通过以上例子可以看出,MyBatis和MyBatis-Plus在实现方式上存在明显的区别。MyBatis需要编写映射文件和Java代码来实现数据库操作,而MyBatis-Plus则通过注解的方式简化了代码量,提供了更多的功能和便利性。

五、MyBatis和MyBatis-Plus的优缺点

MyBatis的优点
  1. 简单易学:MyBatis的入门门槛相对较低,其SQL映射文件和Java代码的写法都比较直观,易于上手。
  2. 灵活性强:MyBatis允许开发者直接编写SQL语句,这使得开发者能够更加灵活地处理复杂的查询和操作。
MyBatis的缺点
  1. 代码量较大:相比MyBatis-Plus,MyBatis需要编写更多的代码,包括SQL映射文件和Java代码。
  2. 功能相对较少:MyBatis本身的功能相对较少,需要开发者自行编写更多的逻辑。
MyBatis-Plus的优点
  1. 简化开发:MyBatis-Plus提供了许多便利的功能,如自动生成代码、支持ActiveRecord模式、分页插件等,可以大大简化开发过程。
  2. 功能丰富:MyBatis-Plus在MyBatis的基础上增加了更多的功能,如乐观锁、分页插件等,可以满足更多的业务需求。
MyBatis-Plus的缺点
  1. 学习成本较高:对于熟悉MyBatis的开发者来说,学习MyBatis-Plus需要一定的成本。
  2. 可能不适合大型项目:由于MyBatis-Plus提供了许多自动化的功能,可能在大型项目中存在一定的局限性和潜在的风险。

以上是MyBatis和MyBatis-Plus的主要区别,具体选择哪个框架取决于你的具体需求和项目规模。

六、SpringBoot集成MyBatis和MyBatis-Plus

SpringBoot是一个轻量级的Java框架,它提供了许多便利的功能和插件,可以快速构建Web应用程序。在SpringBoot中集成MyBatis和MyBatis-Plus可以更方便地管理数据库操作。

在SpringBoot中集成MyBatis时,需要使用MyBatis的依赖包和配置文件进行配置。同时,还需要编写SQL映射文件和Java代码来实现数据库操作。

在SpringBoot中集成MyBatis-Plus时,同样需要使用相应的依赖包和配置文件进行配置。与MyBatis不同的是,MyBatis-Plus可以通过注解的方式进行SQL语句的编写,无需编写映射文件。同时,MyBatis-Plus还提供了多种数据库操作方法,可以方便地实现数据的增删改查操作。

以为做过的项目为例:

项目目录:

pom.xml文件里面的MyBatis依赖:

在映射文件.xml里面写mysql语句:

<?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="mybatis.demo.mapper.BrandMapper">

    <select id="getAllBrand" resultType="mybatis.demo.entity.Brand">
        select * from brand
    </select>

    <select id="getBrandById" resultType="mybatis.demo.entity.Brand">
        select * from brand where id=#{id}
    </select>

    <insert id="addBrand">
        insert into brand(name) values (#{name})
    </insert>

    <update id="updateBrand">
        update brand set name=#{name} where id=#{id}
    </update>

    <delete id="deleteBrand">
        delete from brand where id=#{id}
    </delete>
</mapper>

七、总结

MyBatis和MyBatis-Plus是两个流行的Java持久层框架,它们都用于将对象关系映射模型映射到数据库。在这篇博客中,我们介绍了MyBatis和MyBatis-Plus的基本实现以及它们之间的区别。对于初学者来说,MyBatis可能更适合。MyBatis相对简单易学,入门门槛较低,其SQL映射文件和Java代码的写法都比较直观,易于上手。同时,MyBatis的功能相对较少,需要开发者自行编写更多的逻辑,这也有助于初学者更好地理解数据库操作和对象关系映射的概念。

而MyBatis-Plus虽然提供了更多的功能和便利性,但其学习成本较高,需要理解更多的概念和用法。对于初学者来说,可能会感到有些困难。

当然,最终的选择还是要看个人的兴趣和需求。如果你对数据库操作和对象关系映射有更深入的了解,并且希望使用一个功能丰富、易于使用的框架,那么MyBatis-Plus也是一个不错的选择。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值