日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

(一)前言

最早寫JDBC的時候,要手動配連接信息,要一條條手寫sql語句。后來MyBatis出現了,不需要再手動配置連接信息,sql語句也和代碼隔離開來,但是還免不了寫Sql。接著出現了MybatisPlus,這下連Sql都不用寫了。

(二)什么是MybatisPlus

首先還是把官網地址拿出來:

mp.baomidou.com/guide/

簡單來講,MybatisPlus是Mybatis的增強工具,簡化開發,提高開發效率。在官網中,他用這樣一幅圖表示MybatisPlus和Mybatis之間的關系。

用了MybatisPlus后,我很久沒有手寫sql了

 

在圖片中,MybatisPlus表示它和Mybatis之間的關系就像魂斗羅中的兩兄弟一樣,互相不會影響,但是能幫你在打怪路上更加輕松。

(三)前置準備

在講解MybatisPlus之前,我們先準備一批數據

CREATE DATABASE user;
USE user;
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶Id',
  `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶名',
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密碼',
  `gmt_create` datetime(3) NOT NULL COMMENT '創建時間',
  `gmt_modified` datetime(3) NOT NULL  COMMENT '修改時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
INSERT INTO `user` VALUES
(1,'a001','name1','123456',now(),now()),
(2,'a002','name2','123456',now(),now()),
(3,'a003','name3','123456',now(),now()),
(4,'a004','name4','123456',now(),now()),
(5,'a005','name5','123456',now(),now()),
(6,'a006','name6','123456',now(),now()),
(7,'a007','name7','123456',now(),now()),
(8,'a008','name8','123456',now(),now()),
(9,'a009','name9','123456',now(),now()),
(10,'a010','name10','123456',now(),now())

(四)Mybatis快速入門

1、引入最新的依賴

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

2、在配置中心配置數據庫連接信息

spring.datasource.url=jdbc:MySQL://192.168.61.102:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3、在Spring啟動類中添加MApperScan注解

@SpringBootApplication
@MapperScan("com.example.mybatisplus.mapper")
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }
}

4、創建mapper,DO

MybatisPlus可以自動生成Mapper、DO、Service、Controller,這里作為教程,手動建立。MybatisPlus和Mybatis的第一個不同點,這里使用@TableName注解標明當前的實體類對應哪個表

@Data
@TableName("user")
public class UserDO {
    private Long id;
    private String userId;
    private String username;
    private String password;
    private LocalDateTime gmtCreate;
    private LocalDateTime gmtModified;
}

創建Mapper類時,繼承BaseMapper類,這是MybatisPlus提供的一個基類,封裝了常用的查詢操作

public interface UserMapper extends BaseMapper<UserDO> {
}

5、查詢數據

在使用Mybatis時,數據的CRUD都需要編寫sql才能實現,MybatisPlus提供的BaseMapper既提供了Mapper層面的封裝接口,又提供了Service層面的封裝接口。基于以往的寫法,平常開發中會更加傾向于使用Mapper層面的接口 介紹Mapper層面的幾個接口:

比如我想查詢user表的數據量,我就可以直接調用:

Integer integer = userMapper.selectCount(null);

MybatisPlus提供了一個條件構造器Wrappers,可以通過Wrappers構造一系列條件,比如查詢username為name1的數據

List<UserDO> userDOList = userMapper.selectList(Wrappers.<UserDO>lambdaQuery()
                .eq(UserDO::getUsername, "name1"));

又比如我想查詢id大于5的數據

List<UserDO> userDOList1 = userMapper.selectList(Wrappers.<UserDO>lambdaQuery()
                .gt(UserDO::getId, 5));

6、數據插入

數據的查詢使用上面的方式沒有任何問題,插入數據時有幾個可以優化的地方,我們可以通過一個注解@TableId設置主鍵自增方式,可以通過@TableField注解設置數據的自動填充。 因此修改一下UserDO這個類:

@Data
@TableName("user")
public class UserDO {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String userId;
    private String username;
    private String password;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;
}

在實體類中,設置id自增,設置gmtCreate在插入時自動填充,設置gmtModified在創建和修改時自動填充,接著配置自動填充規則:

@Configuration
public class MybatisObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        setFieldValByName("gmtCreate", LocalDateTime.now(),metaObject);
        setFieldValByName("gmtModified", LocalDateTime.now(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        setFieldValByName("gmtModified",LocalDateTime.now(),metaObject);
    }
}

最后直接調用API插入數據

@Test
public void test3(){
    UserDO userDO=new UserDO();
    userDO.setUserId("a011");
    userDO.setUsername("name11");
    userDO.setPassword("123456");
    userMapper.insert(userDO);
}

更多的查詢方法可以參考官網,十分詳細。但是如果你的sql涉及到多表的連表操作,還是可以自己和MyBatis一樣手寫sql。

(五)總結

至此,你應該對MybatisPlus有了大致的了解,另外值得一提的是MybatisPlus的開源組織苞米豆是國內的組織,因此這份文檔對國內開發人員來說特別友好,可放心使用。我是魚仔,我們下期再見!

分享到:
標簽:MybatisPlus
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定