0


MyBatis与MyBatisPlus的区别

一、MyBatis-Plus简介

1.1 什么是mybatis-plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。

官网一共有两个:https://mybatis.plus/https://mp.baomidou.com/

2.2 mybatis-plus的作者

Mybatis-Plus是由baomidou(苞米豆)组织开发并且开源的,截止写博客时间,该组织共17人。

二、如何使用MyBatis-Plus

2.1 mybaits回顾

详细步骤以及代码可以查看这篇博客:

什么是MyBatis_涩即是Null的博客-CSDN博客

2.1.1 需要准备的代码块

2.1.2 使用

当我们完成了上面这些必要的准备工作后,那么我们就可以使用mybatis了。

例如我们要查询数据库的信息:

/**
 * 查询
 * @throws IOException
 */
@Test
public void test1() throws IOException {
    //获得核心配置文件
    InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    //获得session工厂对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    //获得session会话对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //执行操作 参数:namespace+id
    List<User> userList = sqlSession.selectList("userMapper.findAll");
    //打印数据
    System.out.println(userList);
    //释放资源
    sqlSession.close();
}

这里几个API的解释:

  • SqlSessionFactoryBuilder :工厂构建器。通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象 。

  • SqlSessionFactory:工厂对象 ,用来创建sql会话。openSession( )会默认开启一个事务,但事务不会自动提交,也就意味着需要手动提 交该事务,更新操作数据才会持久化到数据库中 。如果里面传一个参数为true,那么不需要手动提交事务(更新操作中sqlSession.commit()方法就不需要写了)。

  • SqlSession :会话对象。执行接下来的增删改查操作。

2.2 mybatis-plus入门使用(结合springboot)

2.2.1 导入依赖

在pom.xml中先导入如下依赖:

<!-- mybatis-plus插的springboot支持 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>
<!-- MySql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>
<!-- 连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
</dependency>

2.2.2 编写配置文件

当我们使用springboot时,可以直接使用properties文件来直接配置,而不再是xml文档。

编写application.properties :

spring.application.name = mybatisPlus
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatisplus?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

2.2.3 编写dao实体(或pojo)

在原生mybatis中,驼峰映射默认是关闭的,但在mybatis-plus中是默认打开的。这样我们就可以从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属 性名 aColumn(驼峰命名) 的类似映射 。当我们不需要这样操作时,也可以在配置文件中关闭,即:

mybatis-plus.configuration.map-underscore-to-camel-case=false

这里使用User.java来存储和使用user信息:

@Data
@TableName("tb_user") 
public class User {

    @TableId(type = IdType.AUTO)  
    private Long id;

    private String userName;

    @TableField(select = false)  
    private String password;

    private String name;
    private Integer age;

    @TableField(value = "email")  
    private String mail;

    @TableField(exist = false)  
    private String address;
}

在这里,我们就可以看到mybatis-plus中给我提供了很多便捷的注解:

  • @TableName("tb_user"):因为在mybatis-plus中,默认找的数据库表名是“数据库名.实体名”。但是我们的数据库表名tb_user与其不一致,因此需要重新指定在数据库中的表名。

  • @TableId (type=IdType.AUTO):若type=IdType.AUTO则表示id自增长。

  • @TableField(select=false):表示查询时不返回该字段值,用来保护用户的密码信息。

  • @TableField(value="email"):因为mail与我们数据库中存储的email字段并不匹配(不是常规的驼峰命名),直接查询会导致查询失败。可以使用value字段重新指定。

  • @TableField(exist=false):假如该字段我们后期可能会插入数据库,但目前数据库还不存在该信息,那么我们就可以使用exist字段先不查询该字段以防报错。

2.2.4 继承BaseMapper

编写一个mapper去继承BaseMapper,BaseMapper是mybatis-plus团队所编写的用来直接操作数据库的接口。继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。

例如UserMapper.java:

public interface UserMapper extends BaseMapper<User> {
    
}

2.2.5 测试(springboot环境)

编写测试代码:

@RunWith(SpringJUnit4ClassRunner.class)  
@SpringBootTest
public class MybatisPlusSpringBootTest {

    @Autowired
    private UserMapper userMapper;  

    @Test
    public void testSelectList(){
        List<User> users = this.userMapper.selectList(null);
        for (User user: users) {
            System.out.println(user);
        }
    }
}

运行:

上面代码的selectList即为BaseMapper接口中的一个方法,以下为mybatis-plus官方注释:

2.3 mybatis-plus的简单总结(与mybatis的区别)

到这里,我们的mybatis-plus的基本使用就是这样完成的。与mybatis的区别基本有这些:

  1. 我们可以看到,我们不需要写sqlMapper.xml,而是直接继承一个父类BaseMapper就可以直接操作数据库。当然,当mybatis-plus的功能不足以完成我们的CRUD功能时,也还是需要我们继续编写sql语句。而大多数常用情况下我们可以直接使用Mybatis-plus给我们的方法去操作数据库。

  2. 而在dao实体类中我们也可以发现,mypatis-plus也为我们提供了很多方便的注解去实现数据库的一些约束条件。

  3. 在我们后期使用一些插件时的配置,在springboot中可以直接写在Application.properties中,而不是sqlConfig.xml。


本文转载自: https://blog.csdn.net/weixin_51418964/article/details/128791821
版权归原作者 涩即是Null 所有, 如有侵权,请联系我们删除。

“MyBatis与MyBatisPlus的区别”的评论:

还没有评论