MyBatis-Plus使用筆記(一):SpringBoot集成MyBatis-Plus

一、創建並初始化數據庫

1、創建數據庫:

mybatis_plus

2、創建 User

其表結構如下:

id name age email
1 Jone 18 [email protected]
2 Jack 20 [email protected]
3 Tom 28 [email protected]
4 Sandy 21 [email protected]
5 Billie 24 [email protected]

其對應的數據庫 Schema 腳本如下:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(20) NOT NULL COMMENT '主鍵ID',
  `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(11) NULL DEFAULT NULL COMMENT '年齡',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '郵箱',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

其對應的數據庫 Data 腳本如下:

INSERT INTO `user` VALUES (1, 'Jone', 18, '[email protected]');
INSERT INTO `user` VALUES (2, 'Jack', 20, '[email protected]');
INSERT INTO `user` VALUES (3, 'Tom', 28, '[email protected]');
INSERT INTO `user` VALUES (4, 'Sandy', 21, '[email protected]');
INSERT INTO `user` VALUES (5, 'Billie', 24, '[email protected]');

二、初始化工程

使用 Spring Initializr 快速初始化一個 Spring Boot 工程

Group:cn.hanzhuang42

Artifact:mybatis-plus

  • 2.2.6.RELEASE

    • JDK 8

三、添加依賴

1、引入依賴

存在:spring-boot-starter、spring-boot-starter-test

添加:mybatis-plus-boot-starter、MySQL、lombok

在項目中使用Lombok可以減少很多重複代碼的書寫。比如說getter/setter/toString等方法的編寫

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    </dependencies>

**注意:**引入 MyBatis-Plus 之後請不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差異導致的問題。

2、idea中安裝Lombok插件

setting->plugins->Marketpalce

搜索Lombok(注意是大寫不然可能搜索不到)

在這裏插入圖片描述

四、配置

application.properties 配置文件中添加 MySQL 數據庫的相關配置:

這裏的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver,在 jdbc 8 中 建議使用這個驅動,之前的 com.mysql.jdbc.Driver 已經被廢棄,否則運行測試用例的時候會有 WARN 信息

mysql8以上必須使用該驅動使用

url 使用了 ?serverTimezone=GMT%2B8 後綴,因爲這個版本的 jdbc 驅動需要添加這個後綴,否則運行測試用例會報錯。

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456

五、編寫代碼

1、主類

在 Spring Boot 啓動類中添加 @MapperScan 註解,掃描 Mapper 文件夾

@SpringBootApplication
@MapperScan("cn.hanzhuang42.mybatisplus.mapper")
public class MybatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }

}

2、實體

創建包 entity 編寫實體類 User.java(此處使用了 Lombok 簡化代碼)

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

查看編譯結果
在這裏插入圖片描述

3、mapper

創建包 mapper 編寫Mapper 接口,它繼承了BaseMapper,其中有很多mapper方法,並以泛型的形式傳入了User。這樣MyBatis-Plus自動生成UserMapper的實現類,不用編寫,甚至連sql語句都可以不用寫

public interface UserMapper extends BaseMapper<User> {

}

六、開始使用

添加測試類,進行功能測試:

@SpringBootTest
class MybatisPlusApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    void findAll() {
        List<User> userList = userMapper.selectList(null);

        for (User user : userList) {
            System.out.println(user);
        }
    }
}

**注意:**IDEA在 userMapper 處報錯,因爲找不到注入的對象,因爲類是動態創建的,但是程序可以正確的執行。爲了避免報錯,可以在 dao 層 的接口上添加 @Repository 注

控制檯輸出:

User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

七、配置日誌

查看sql輸出日誌

#mybatis日誌
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

這樣就可以在控制檯看到sql語句等信息

JDBC Connection [HikariProxyConnection@635739314 wrapping com.mysql.cj.jdbc.ConnectionImpl@7f7af971] will not be managed by Spring
==>  Preparing: SELECT id,name,age,email FROM user 
==> Parameters: 
<==    Columns: id, name, age, email
<==        Row: 1, Jone, 18, test1@baomidou.com
<==        Row: 2, Jack, 20, test2@baomidou.com
<==        Row: 3, Tom, 28, test3@baomidou.com
<==        Row: 4, Sandy, 21, test4@baomidou.com
<==        Row: 5, Billie, 24, test5@baomidou.com
<==        Row: 1273618618428489730, Ada, 22, ada@qq.com
<==      Total: 6
m
<==        Row: 3, Tom, 28, test3@baomidou.com
<==        Row: 4, Sandy, 21, test4@baomidou.com
<==        Row: 5, Billie, 24, test5@baomidou.com
<==        Row: 1273618618428489730, Ada, 22, ada@qq.com
<==      Total: 6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章