一款不需要写sql语句的强大工具——MyBatis-Plus
2022-08-02 22:27 young柠檬味 阅读(907) 评论(0) 编辑 收藏 举报
基础使用
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
2.修改application.yml中数据库的相关配置
datasource
3.在 SpringBoot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
4.编写实体类User.java
5.编写UserService接口并定义增删改查的方法,需要继承IService
public interface UserService extends IService<User> {
List<User> getAllUsers();
Boolean addUser(User user);
Boolean updateUser(User user);
Boolean deleteUser(Integer id);
}
5.编写dao层的mapper:UserMapper,需要继承BaseMapper
6.编写UserService的实现类UserServiceImpl,需要继承ServiceImpl,实现UserService
以上便实现了一个基础的使用MyBatis-Plus完成CRUD操作,没有任何条件,接下来介绍一下带条件的一些操作。
带条件的更新、查询和修改
1.带条件的更新
上面介绍的updateById是根据实体的主键来进行更新的,但有时也需要根据其他属性来进行更新,如直接根据username来进行修改,则需要添加修改条件,可以使用UpdateWrapper来设置更新时的条件
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("username",user.getUsername());
int update = userMapper.update(user,updateWrapper);
updateWrapper.eq("username","zhangsan")中的eq()方法相当于设置更新时的条件,第一个参数对应数据库中user表的列名,第二个参数是对应条件的值。
2.带条件的查询
当查询某一条数据时,需要传入相对应的条件,使用QueryWrapper来设置查询时的条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username",user.getUsername());
User user = userMapper.selectOne(queryWrapper);
List<User> userList = userMapper.selectList(queryWrapper);
selectOne是查询数据库中的一条数据,使用该查询有一个要求,即设置的查询条件对应的结果只能有一条,否则便会报错;selectList是查询设置的条件所对应的所有结果,无任何要求。
3.带条件的删除
上面介绍的deleteById是根据主键来进行删除的,若使用其他参数来进行删除,可以使用QueryWrapper来设置删除时的条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username",user.getUsername());
int delete = userMapper.delete(queryWrapper);
此处delete的值并不一定为1,数据库中针对该条件所查询到的值有几条,delete的值便是多少。
模糊查询以及分页
1.设置分页插件
2.使用MyBatis-Plus自带的工具selectPage完成分页,使用queryWrapper.like完成模糊查询
public List<User> getAllUserPage(int crrentPage, int size, String username){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//使用username来进行模糊查询条件,首先需要判断一下username是否为空,可以使用StringUtils.isBlank()
//当username不为空/null/带空格的字符串时,将其加入条件查询
if(!StringUtils.isBlank(username)){
queryWrapper.like("username",username);
}
Page<User> page = new Page<>(crrentPage, size);
Page<User> IPage = userMapper.selectPage(page, queryWrapper);
List<User> userList = IPage.getRecords();
return userList;
}
Page是一个分页对象,里面保存了通过分页查询到的所有数据,包括当前页的所有信息getRecords()、数据库中的总条数getTotal()、如果分页的话可以分的总页数getSize()。
通过上一步获取到的IPage,我们可以通过上述方法获取到以上的信息
List<User> userList = IPage.getRecords();
Long total = IPage.getTotal();
Long size = IPage.getSize();