MyBatis と MyBatisPlus の違い

1. MyBatis-Plus の概要

1.1 mybatis-plusとは

MyBatis-Plus (略して MP) は、MyBatis の拡張ツールであり、 MyBatis をベースに、何も変更せずに拡張のみを行い、開発の簡素化と効率化を目的として作成されています。

公式 Web サイトは 2 つあります: https://mybatis.plus/またはhttps://mp.baomidou.com/

2.2 mybatis-plus の作成者

Mybatis-Plus は baomidou 組織によって開発およびオープンソース化されており、このブログの執筆時点でこの組織には 17 人が所属しています。

2. MyBatis-Plusの使い方

2.1マイベイツのレビュー

詳細な手順とコードは、このブログにあります。

MyBatis_Sure is 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给我们的方法去操作数据库。

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

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

おすすめ

転載: blog.csdn.net/weixin_51418964/article/details/128791821