Khung MyBatis Plus trong Phát Triển Ứng Dụng Java

Nội Dung Cơ Bản

1.1 Giới Thiệu và Cài Đặt

MyBatis Plus là công cụ nguồn mở Trung Quốc chưa được hỗ trợ mặc định trong IntelliJ IDEA. Khi tạo dự án Spring Boot, không chọn MyBatis để tránh xung đột thư viện. Thêm dependency:

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

1.3 Phương Thức BaseMapper

Interface cung cấp các thao tác CRUD cơ bản:

public interface BaseMapper<T> {
    int add(T entity); // Thêm bản ghi
    int removeById(Serializable id); // Xóa theo ID
    int changeById(@Param("et") T entity); // Cập nhật theo ID
    Lion getById(Serializable id); // Truy vấn theo ID
    List<Lion> getList(@Param("ew") Wrapper<T> queryWrapper); // Truy vấn có điều kiện
}
Ví Dụ Sử Dụng
// Thêm dữ liệu sư tử
Lion lion = new Lion();
lion.setName("Sư tử đực");
lion.setAge(4);
lionMapper.add(lion);

// Truy vấn theo điều kiện
LambdaQueryWrapper<Lion> query = new LambdaQueryWrapper<>();
query.gt(Lion::getAge, 3).lt(Lion::getWeight, 200);
List<Lion> lions = lionMapper.getList(query);

1.4 IService và ServiceImpl

Lớp dịch vụ bổ sung phương thức nghiệp vụ:

public interface LionService extends IService<Lion> {}

@Service
public class LionServiceImpl 
       extends ServiceImpl<LionMapper, Lion> 
       implements LionService {}
Phương Thức Chính
  • save(entity): Thêm bản ghi (gọi BaseMapper.insert)
  • removeBatchByIds(): Xóa hàng loạt theo ID
  • modifyById(entity): Cập nhật theo ID
  • getPage(): Phân trang dữ liệu

1.6 Điều Kiện Động

String nameParam = null;
Integer minWeight = 150;

LambdaQueryWrapper<Lion> dynamicQuery = new LambdaQueryWrapper<>();
dynamicQuery
    .like(nameParam != null, Lion::getName, nameParam)
    .gt(minWeight != null, Lion::getWeight, minWeight);

1.8 Xóa Logic và Vật Lý

Cấu hình xóa logic trong application.yml:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

Đánh dấu trường logic trong entity:

@TableLogic
private Integer deleted;

Chú Thích Quan Trọng

2.2 @TableId

Xác định trường khóa chính:

@TableId(value = "lion_id", type = IdType.AUTO)
private Long id;

2.3 @TableField

@TableField("lion_age")
private Integer age;

@TableField(exist = false) // Không ánh xạ vào CSDL
private String tempData;

2.5 Cấu Hình Phân Trang

@Bean
public MybatisPlusInterceptor paginationInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
}

Thẻ: MyBatis-Plus BaseMapper IService LambdaWrapper TableLogic

Đăng vào ngày 2 tháng 7 lúc 14:29