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中也是支援的,這就是它的無侵入性。