1. 程式人生 > 實用技巧 >Mybatis Plus AR模式/主鍵策略

Mybatis Plus AR模式/主鍵策略

一、AR模式

AR模式簡單的說就是直接用實體操作資料庫

需要兩步,首先繼承 Model 類

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@Data
//@EqualsAndHashCode(callSuper = false)
public class User extends Model<User>
{ }

然後需要存在可以使用的Mapper

public interface UserMapper extends BaseMapper<User> {
}

滿足條件後可以使用實體類進行資料庫操作,我認為使用 Mapper 就足夠了

@SpringBootTest
public class ARTest {
    @Test
    public void insert() {
        User user = new User();
        user.setName("章草");
        user.setAge(24);
        user.setEmail(
"[email protected]"); user.setManagerId(1087982257332887553L); user.setCreateTime(new Date()); boolean flag = user.insert(); System.out.println(flag); } @Test public void selectById() { User user = new User(); User user1 = user.selectById(1352099043086524417L); System.out.println(user
== user1);// false System.out.println(user1); } @Test public void selectById2() { User user = new User(); user.setId(1352099043086524417L); User user1 = user.selectById(); System.out.println(user == user1);// false System.out.println(user1); } @Test public void updateById() { User user = new User(); user.setId(1352099043086524417L); user.setName("章草草"); boolean flag = user.updateById(); System.out.println(flag); } @Test public void deleteById() { User user = new User(); user.setId(1352099043086524417L); boolean flag = user.deleteById(); System.out.println(flag); } @Test public void insertOrUpdate() { User user = new User(); user.setName("張華"); user.setAge(24); user.setEmail("[email protected]"); user.setManagerId(1087982257332887553L); user.setCreateTime(new Date()); // 沒有設定主鍵,則插入到資料庫 // 如果設定了主鍵,首先根據主鍵查詢記錄是否存在,存在則更新,不存在則新增 boolean flag = user.insertOrUpdate(); System.out.println(flag); } }

二、MP支援的主鍵策略

1、區域性主鍵策略

@TableId(type= IdType.ID_WORKER)
private Long id;

官網介紹

2、全域性主鍵策略

# Mybatis Plus配置
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*.xml
  global-config:
    db-config:
      id-type: id_worker

三、基本配置

官網介紹,內容很多,官網中文描述很詳細

四、通用Service

在實際開發中,service 可以繼承 ServiceImpl,來對 service 功能進行擴充套件,其中的批量操作給我們帶來很大的方便

package com.mp.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mp.dao.UserMapper;
import com.mp.entity.User;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> {
}

使用lambda的程式碼演示

@SpringBootTest
public class ServiceTest {
    @Autowired
    private UserServiceImpl userServiceImpl;

    @Test
    public void chain(){
        List<User> list = userServiceImpl.lambdaQuery().gt(User::getAge, 25).like(User::getName, "雨").list();
        list.forEach(System.out::println);
    }

    @Test
    public void chain1(){
        boolean update = userServiceImpl.lambdaUpdate().eq(User::getAge, 25).set(User::getAge, 26).update();
        System.out.println(update);
    }

    @Test
    public void chain2(){
        boolean remove = userServiceImpl.lambdaUpdate().eq(User::getAge, 25).remove();
        System.out.println(remove);
    }
}