MybatisPlus_01

西伯利亞愛學習的狼發表於2020-12-19

1.1 簡介

MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。

1.1.1 特性

1.1.2 框架結構

2.1 快速開始

首先建立一張資料表如下:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
	id BIGINT(20) NOT NULL COMMENT '主鍵ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	age INT(11) NULL DEFAULT NULL COMMENT '年齡',
	email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
	PRIMARY KEY (id)
);

插入資料:


DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

2.1.1

在springboot工程中新增mybatisplus依賴包:

 <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.1</version>
    </dependency>

2.1.2 yaml檔案配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
    password: xhj970829
    username: root

2.1.3 編碼

編寫實體類 User.java(此處使用了 Lombok 簡化程式碼):

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

編寫Mapper類 UserMapper.java

public interface UserMapper extends BaseMapper<User> {

}

2.1.4 測試

@SpringBootTest(classes = MybatisdemoApplication.class)
@RunWith(SpringRunner.class)
class MybatisdemoApplicationTests {
@Autowired
    UserMapper userMapper;
    @Test
    void contextLoads() {




    }
    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        Assert.assertEquals(5, userList.size());
        userList.forEach(System.out::println);
    }

}

控制檯輸出:

3.1 思考

我們先來回顧一下之前Mybayis的操作一般是先編寫dao介面層,第二步主要有兩種一種是直接在dao介面層裡使用註解的方式將每一個方法與sql語句繫結,還有一種也是我比較
喜歡的一種方式在Resource下新建mapper檔案,給每一個dao介面編寫對應的mapper.xml檔案,這樣的好處是程式碼可讀性比較高,不會糅雜在一起。

那麼MyabiysPlus改變了什麼?
首先

MybatisPlus其實幫我們寫好了很多基本的CRUD操作,我們可以看看這個繼承類裡有什麼:

public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);

    int deleteById(Serializable id);

    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

    int delete(@Param("ew") Wrapper<T> queryWrapper);

    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    int updateById(@Param("et") T entity);

    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

    T selectById(Serializable id);

    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

    T selectOne(@Param("ew") Wrapper<T> queryWrapper);

    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);

    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}

這裡面內建了很多我們們工作中能用到的基本CRUD操作,我們也不用寫註解也不用編寫mapper.xml檔案。

當然註解和mapper.xml這種方式在MyabtisPlus中也是支援的,這就是它的無侵入性。