目录
目录
6.在启动类上加入@MapperScan注解扫描到mapper文件
1.创建maven工程
勾选Spring Web MySql Lombok
2.导入依赖Mybatis-puls
在pom文件夹导入依赖Mybatis-puls
小知识:spring外部的依赖是以功能开头,内部的依赖是以功能为结尾.
第三步:创建数据库表
创建一个学生表tb_student
4.在application.yml连接数据库
5.创建Student实体类
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //有参构造器
@NoArgsConstructor //无参构造器
@TableName("tb_student") //识别表名
public class Student {
private Integer id;
private String name;
private Integer age;
private String sex;
}
6.在启动类上加入@MapperScan注解扫描到mapper文件
这个包名可以大一点没关系的,也能扫到mapper
7.创建mapper包,创建mapper接口
8.测试完成增删改查
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.mybatispulstest.demos.mapper.StudentMapper;
import com.example.mybatispulstest.demos.pojo.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class MybatisPulsTestApplicationTests {
@Autowired
private StudentMapper studentMapper;
/*
* 查询所有
* */
@Test
void contextLoads() {
List<Student> students = studentMapper.selectList(null);
students.forEach(System.out::println);
}
/*
* id查询
* */
@Test
void selectId(){
Student student = studentMapper.selectById(2);
System.out.println(student);
}
/*
* 插入数据
* */
@Test
void add(){
Student student = new Student();
student.setName("郭铁心");
student.setId(null);
student.setSex("男");
student.setAge(50);
studentMapper.insert(student);
}
/*
* 更新表中数据
* */
@Test
void update(){
Student student = new Student();
student.setName("黄七");
student.setId(489365506);
studentMapper.updateById(student);
}
/*
*更具id删除数据
* */
@Test
void delectId(){
studentMapper.deleteById(3);
}
/*
* 查询年龄大于等于18岁的数据
* */
@Test
void selectAge(){
QueryWrapper<Student> wrapper = new QueryWrapper<>();
wrapper.ge("age", 18);
List<Student> students = studentMapper.selectList(wrapper);
students.forEach(System.out::println);
}
/*
* 查询年龄大于19,且性别是男的数据
* */
@Test
void selectAgeAndSex(){
QueryWrapper<Student> wrapper = new QueryWrapper<>();
wrapper.gt("age", 19).eq("sex", "男");
List<Student> students = studentMapper.selectList(wrapper);
students.forEach(System.out::println);
}
/*
* 查找名字姓令,且年龄早1-40岁之间,且是男性的数据
* */
@Test
void selectLike(){
QueryWrapper<Student> wrapper = new QueryWrapper<>();
wrapper.like("name","令%").between("age",1,40).eq("sex","男");
List<Student> students = studentMapper.selectList(wrapper);
students.forEach(System.out::println);
}
}
9.自动填充
创建时间、更新时间!这个操作是自动化完成的,不要手动更新!
gmt_create、gmt_modified几乎在所有表都要配置上,而且自动化填充。gmt是时间时间的意思
1.给数据库创建2个新的字段
2.实体类的成员变量上添加注解
@TableField
@TableField(fill = FieldFill.INSERT)
private LocalDateTime gmt_create;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime gmt_modified;
3.编写处理器
@Slf4j //日志
@Component//以组件的形式把这个处理器注册到IOC容器中
public class MyMetaObjectHandler implements MetaObjectHandler {
//插入时启动 第三个参数 LocalDateTime 一定要和 createTime成员变量的值的类型一致,不然是null 如果是date就都设置date
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "gmt_create", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
this.strictUpdateFill(metaObject, "gmt_modified", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
}
//更新时候启动
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "gmt_modified", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
}
}
在添加数据和更新数据后面就会显示时间了.
10.plus的原生方法
删除
1.delete--条件删除
@Test
void delete(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("username","魏无羡");
userMapper.delete(wrapper);
}
2.deleteBathIds--根据id批量删除
@Test
void deleteBathIds(){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
userMapper.deleteBatchIds(list);
}
3. deleteById--根据id删除单条数据
@Test
void deleteById(){
userMapper.deleteById(123);
}
4.deleteByMap--根据条件删除
@Test
void deleteByMap(){
Map<String, Object> map = new HashMap<>();
map.put("password","1234");
userMapper.deleteByMap(map);
}