前言
-
官网地址:https://baomidou.com/
-
特点:
- 相对于mybatis来说,它往ORM框架靠拢,使用mybatis-plus后可以不用写映射文件的sql语句,它提供一部分对数据库表的操作方法,继承BaseMapper后,就可以直接调用其中的方法。
操作步骤
1.首先创建一个简单的spring-boot项目
2.导入相关依赖
在pom.xml文件中
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
3.配置
MyBatis-Plus 的配置异常的简单,我们仅需要一些简单的配置即可使用 MyBatis-Plus 的强大功能!
在spring-boot的启动类上配置MapperScan注解
package com.lanou;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = {"com.lanou.mapper"})
public class Class21Application {
public static void main(String[] args) {
SpringApplication.run(Class21Application.class, args);
}
}
当然,数据源等配置也不要忘记;在application.properties中配置:
server.port=8080
# 数据源
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
4.实体类,接口,映射文件
这里我用的是自己数据库中一张名为person的表
1.创建实体类与表的字段对应
package com.lanou.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
//指定表名
@TableName(value = "person")
public class Person {
//修饰主键,不指定字段默认和字段名一样
@TableId(type = IdType.AUTO)
private Integer id;
//修饰非逐渐字段,默认属性名和字段名一样
@TableField(value = "name")
private String name;
private Integer age;
private String sex;
//数据库表中不存在的字段
@TableField(exist = false)
private String birth;
}
2.创建接口继承BaseMapper
这样就可以不用我们写方法了
package com.lanou.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lanou.model.Person;
/*
BaseMapper:mybatis-plus提供的持久层接口,泛型部分指定的是要操作的表对应的实体类
改接口提供了简单的增删改查方法
*/
public interface PersonMapper extends BaseMapper<Person> {
}
3.创建映射文件
映射文件中只需要指定namespace即可
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 的值设定为被映射的包名.类名 -->
<mapper namespace="com.lanou.mapper.PersonMapper">
</mapper>
5.测试
package com.lanou;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lanou.mapper.PersonMapper;
import com.lanou.model.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class Class21ApplicationTests {
@Autowired
private PersonMapper personMapper;
@Test
void contextLoads(){
// 查
// personMapper.selectById(1);
Person person= new Person();
person.setId(2);
person.setSex("男");
person.setAge(20);
person.setName("舒信豪");
//添加
// int row = personMapper.insert(person);
// System.out.println(row);
//删除
personMapper.deleteById(1);
//删除,多个条件用and连接
Map<String,Object> where = new HashMap<String,Object>();
where.put("name","aa");
where.put("id",100);
where.put("age",null);
// personMapper.deleteByMap(where);
QueryWrapper<Person> wrapper = new QueryWrapper<>();
/*
allEq:将map中的内容在SQL条件部分用and连接
codition:指定的部分是否作为SQL的条件部分,默认为true
null2IsNull:是否将map中值为null的字段在SQL中表示为 字段名is NULL
默认为true;false是将map中值为null的键不作为SQL的条件
*/
wrapper.allEq(true,where,true);
personMapper.delete(wrapper);
}
}
}
测试结果
可以看到测试运行中,我们没有编写sql语句,只是继承BaseMapper后,调用方法,底层自动帮我们执行sql语句,又进一步进少了代码量。