提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
MyBatisPlus之增删改查
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
在当今的软件开发领域,Java 一直占据着重要的地位。而在 Java 数据库操作方面,MyBatis-Plus 以其简洁、高效、易用的特点,成为了许多开发者的首选。
MyBatis-Plus 是一个基于 MyBatis 的增强工具,它在 MyBatis 的基础上进行了扩展和优化,提供了更加方便快捷的数据库操作方式。使用 MyBatis-Plus,我们可以通过注解和配置文件来轻松地实现数据库的增删改查操作,极大地提高了开发效率。
在本博客中,我们将详细介绍 MyBatis-Plus 的增删改查功能,并通过实际的代码示例来演示如何使用这些功能。我们将从基础知识开始,逐步深入探讨 MyBatis-Plus 的高级特性。无论你是刚刚接触 MyBatis-Plus,还是已经有一定经验的开发者,都能从中受益。
通过阅读本博客,你将了解到如何利用 MyBatis-Plus 进行高效的数据库操作,以及如何优化你的代码以获得更好的性能。让我们一起开启 MyBatis-Plus 之旅吧!
提示:以下是本篇文章正文内容,下面案例可供参考
MyBatis-Plus 是一个基于 MyBatis 框架的增强工具,它提供了一系列额外的功能和特性,使数据库操作更加简单和高效。MyBatis-Plus 的主要特点和优势包括:
1.创建SpringBoot项目,添加MyBatisPlus起步依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.0version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.26version>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
2.在SpringBoot配置文件中配置数据源
# 数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///school?serverTimezone=UTC
username: root
password: root
3.编写实体类,大家根据需求编写
4.编写Mapper接口,继承BaseMapper
public interface StudentMapper extends BaseMapper<Student> {
}
5.在 SpringBoot启动类中添加 @MapperScan 注解,扫描Mapper文件夹
@SpringBootApplication
@MapperScan("com.zhangsan.mpdemo2.mapper")
public class SpringbootMpApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMpApplication.class, args);
}
}
6.测试Mapper方法
@SpringBootTest
public class StudentMapperTest {
@Autowired
private StudentMapper studentMapper;
@Test
public void testFindById(){
Student student = studentMapper.selectById(1);
System.out.println(student);
}
}
@Test
public void testAdd(){
Student student = new Student(null,"zhangsan","[email protected]","m",20);
studentMapper.insert(student);
// MyBatisPlus插入成功后,可直接直接获取主键的值
System.out.println(student.getId());
}
@Test
public void testUpdate() {
//创建实体类对象
Student student = new Student();
//设置需要更新的属性
student.setName("zhangsan");
//设置需要修改的数据id
student.setId(1);
//根据主键进行更新,没有设置的值则忽略
studentMapper.updateById(student);
}
// 根据id删除
@Test
public void testDeleteById(){
studentMapper.deleteById(7);
}
// 批量删除
@Test
public void testDeleteBatch(){
ArrayList<Integer> ids = new ArrayList();
ids.add(2);
ids.add(3);
studentMapper.deleteBatchIds(ids);
}
// 根据字段条件删除
@Test
public void testDeleteMap(){
Map<String,Object> map = new HashMap();
// 键为数据库列名,而不是对象属性名
map.put("sname","小王");
map.put("gender","m");
// 删除name为小王且gender为m的数据
studentMapper.deleteByMap(map);
// 根据id查询
@Test
public void testFindById() {
Student student = studentMapper.selectById(1);
System.out.println(student);
}
// 根据id批量查询
@Test
public void testFindBatch() {
//创建主键集合
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
ids.add(3);
List<Student> students = studentMapper.selectBatchIds(ids);
students.forEach(System.out::println);
}
// 根据字段条件查询
@Test
public void testFindMap() {
Map<String,Object> map = new HashMap<>();
map.put("sname","zhangsan");
map.put("gender","m");
//查询name为baizhan,gender为m的数据
List<Student> students = studentMapper.selectByMap(map);
students.forEach(System.out::println);
}
在MybatisPlus中,条件构造器是一个可以帮助我们使用面向对象的方式实现数据库操作的where条件的工具,它将条件封装成了一个Wrapper对象。在使用时,我们可以创建条件构造器对象,其中Wrapper和AbstractWrapper是两个抽象类,不能直接实例化,我们在使用时常用的具体实现是QueryWrapper和UpdateWrapper。
条件构造器在查询和修改数据库数据时非常有用。在写一些复杂查询时,我们可以创建一个测试类,并在其中注入需要的Mapper,然后创建一个条件构造器对象,并使用该对象设置查询条件。最后,可以调用Mapper的查询方法来获取结果。
查询方式 | 说明 |
---|---|
or | 或条件语句 |
and | 且条件语句 |
like | 模糊查询 like |
notLike | 模糊查询 not Like |
exists | exists 条件语句 |
notExists | not Exists 条件语句 |
isNull | null 值查询 |
isNotNull | is Not Null 查询 |
in | in 查询 |
notIn | not in 查询 |
groupBy | 分组查询 |
orderBy | 排序查询 |
having | 分组后筛选 |
eq | 等于 = |
ne | 不等于 <> |
between | between 条件语句 |
gt | 大于> |
ge | 大于等于>= |
lt | 小于< |
le | 小于等于<= |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public class Example {
public static void main(String[] args) {
// 创建一个测试类,并在其中注入需要的 Mapper
Example example = new Example();
// 执行查询操作
List<Integer> result = example.queryData();
System.out.println(result);
}
public List<Integer> queryData() {
// 创建一个条件构造器对象
QueryWrapper<Integer> wrapper = new QueryWrapper<>();
// 设置查询条件
wrapper.lt("id", 10).gt("id", 5).like("name", "A%").eq("type", 1);
// 调用 Mapper 的查询方法
List<Integer> list = this.mapper.queryList(wrapper);
return list;
}
}
1.在配置类或启动类配置分页插件
// 注册插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
2.分页查询
// 分页查询
@Test
public void testFindPage() {
//创建分页条件,从第0条数据开始,获取两条数据
Page page = new Page(2,2);
// 分页查询,第二个参数为QueryWrapper,用于添加查询条件
IPage<Student> iPage = studentMapper.selectPage(page, null);
// 打印分页数据
System.out.println("结果集:"+iPage.getRecords());
System.out.println("总页数:"+iPage.getPages());
System.out.println("总条数:"+iPage.getTotal());
System.out.println("当前页:"+iPage.getCurrent());
System.out.println("每页条数:"+iPage.getSize());
}
提示:这里对文章进行总结:
MybatisPlus是一个支持自动映射和简化数据库操作的Mybatis增强工具,提供了丰富的注解和扩展功能,用于简化数据库的增删改查操作。以下是MybatisPlus的增删改查总结: