IService

作用

IService是一个泛型接口,定义了一系列通用的基础方法,这些方法涵盖了常见的增删改查(CRUD)操作。通过实现IService接口,开发者可以快速构建服务层,并简化数据库操作的编码工作。

save(T entity):插入一条记录。
saveBatch(Collection<T> entityList):批量插入记录。
removeById(Serializable id):根据ID删除记录。
remove(Wrapper<T> queryWrapper):根据条件删除记录。
updateById(T entity):根据ID更新记录。
update(T entity, Wrapper<T> updateWrapper):根据条件和实体更新记录。
getById(Serializable id):根据ID查询记录。
list(Wrapper<T> queryWrapper):根据条件查询记录列表。
list():查询所有记录。
count():查询总记录数。
page(IPage<T> page, Wrapper<T> queryWrapper):条件分页查询。

BaseMapper

作用

BaseMapper是MyBatis-Plus框架中的一个核心接口,它主要用于简化数据访问层(mapper)的编写,提供了一系列基本的CRUD(创建、读取、更新、删除)方法,帮助开发者进行数据库操作而无需手动编写对应的SQL语句。

insert:插入一条记录到数据库中。
deleteById:根据主键ID删除一条记录。
updateById:根据主键ID更新一条记录。
selectById:根据主键ID查询一条记录。
selectList:查询所有符合条件的记录列表。

使用方法

1.定义一个实体类User

首先,我们需要为数据库中的用户表创建一个实体类。这个类通常包含与数据库表中的列相对应的字段,以及getter和setter方法。

package com.example.demo.entity;  
  
import com.baomidou.mybatisplus.annotation.IdType;  
import com.baomidou.mybatisplus.annotation.TableId;  
import com.baomidou.mybatisplus.annotation.TableName;  
import lombok.Data;  
  
@Data    
public class User {  
    
    private Long id;  
    private String name;  
    private Integer age;  
    // 其他字段...  
}

2.创建Mapper接口

接下来,我们需要创建一个Mapper接口,这个接口将继承自MyBatis Plus的BaseMapper接口。BaseMapper接口提供了一系列基础的数据库操作方法,如select、insert、update和delete等。r

package com.example.demo.mapper;  
  
import com.baomidou.mybatisplus.core.mapper.BaseMapper;  
import com.example.demo.entity.User;  
import org.apache.ibatis.annotations.Mapper;  
  
@Mapper  
public interface UserMapper extends BaseMapper<User> {  
    // 可以添加自定义的查询方法...  
}

3.创建Service接口和实现类

然后,我们需要创建一个服务接口(UserService)和实现类(UserServiceImpl)。服务接口将继承自IService接口,并指定泛型类型为User。实现类将继承自ServiceImpl类,并实现UserService接口。

package com.example.demo.service;  
  
import com.baomidou.mybatisplus.extension.service.IService;  
import com.example.demo.entity.User;  
  
public interface UserService extends IService<User> {  
    // 可以添加自定义的服务方法...  
}  
  
package com.example.demo.service.impl;  
  
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;  
import com.example.demo.entity.User;  
import com.example.demo.mapper.UserMapper;  
import com.example.demo.service.UserService;  
import org.springframework.stereotype.Service;  
  
@Service  
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {  
    // 可以添加自定义的服务方法实现...  
}

 UserService继承了IService里的crud抽象方法

UserService继承了ServiceImpl,ServiceImpl帮忙重写了IService里的抽象方法

4.在Controller中使用服务

最后,我们可以在Controller层中使用UserService来进行数据库操作。通过注入UserService,我们可以调用其提供的方法来实现具体的业务逻辑。

package com.example.demo.controller;  
  
import com.example.demo.entity.User;  
import com.example.demo.service.UserService;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.*;  
  
import java.util.List;  
  
@RestController  
@RequestMapping("/user")  
public class UserController {  
  
    @Autowired  
    private UserService userService;  
  
    @PostMapping("/save")  
    public boolean saveUser(@RequestBody User user) {  
        return userService.save(user);  
    }  
  
    @DeleteMapping("/delete/{id}")  
    public boolean deleteUser(@PathVariable Long id) {  
        return userService.removeById(id);  
    }  
  
    @GetMapping("/{id}")  
    public User getUserById(@PathVariable Long id) {  
        return userService.getById(id);  
    }  
  
    @GetMapping("/list")  
    public List<User> getAllUsers() {  
        return userService.list();  
    }  
  
    // 其他控制器方法...  
}

LambdaQuerryWrapper

作用

LambdaQueryWrapper是MyBatis-Plus框架中的一个查询构造器。LambdaQueryWrapper主要用于构建基于Lambda表达式的查询条件,从而避免手写SQL语句的繁琐和容易出错的问题。它提供了一系列用于构建查询条件的方法,如eq(等于)、ne(不等于)、like(模糊查询)、in(范围查询)等。

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
import com.zhang.springbootquickstart.mapper.UserMapper;  
import com.zhang.springbootquickstart.pojo.User;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
import java.util.List;  
  
@Service  
public class UserService {  
  
    @Autowired  
    private UserMapper userMapper;  
  
    public List<User> getUsersAbove18() {  
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();  
        queryWrapper.ge(User::getAge, 18); // 查询年龄大于等于18岁的用户  
        return userMapper.selectList(queryWrapper);  
    }  
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部