1、工程创建
1.1初始化工程
注意:写name 和 Group
name:工程名 Group:是项目的包的名字
选择 Lombok依赖
注意: 环境是springboot 2.7.0
2、application.yml文件的配置
spring:
application:
name:Mybatis_Plus-test
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/mp?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
driver-class-name:com.mysql.cj.jdbc.Driver
web:
resources:static-locations:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/templates/
mybatis-plus:
global-config:
db-config:
#设置实体类的表的统一前缀
table-prefix: tbl_
#设置统一的主键生成策略
id-type: auto
configuration:
log-impl:org.apache.ibatis.logging.stdout.StdOutImpl
3、导入pom文件的依赖:
建议直接覆盖所有
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--导入配置文件处理器,配置文件进行绑定就会有提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency>
4、创建数据库和表
-- 创建库
CREATE DATABASE 数据库名;-- 使用库
USE 数据库名;-- 创建表
CREATE TABLE 数据表名(
idINT(11) PRIMARYKEY AUTO_INCREMENT, 主键设置,自动增长
last_nameVARCHAR(50),
emailVARCHAR(50),
genderCHAR(1),
ageint); 表名 字段名 值
INSERTINTOtbl_employee(last_name,email,gender,age)VALUES('Tom','tom@atguigu.com',1,22);
INSERTINTOtbl_employee(last_name,email,gender,age)VALUES('Jerry','jerry@atguigu.com',0,25);
INSERTINTOtbl_employee(last_name,email,gender,age)VALUES('Black','black@atguigu.com',1,30);
INSERTINTOtbl_employee(last_name,email,gender,age)VALUES('White','white@atguigu.com',0,35);
5、创建包entity创建实体类,加入注解
注意:加入注解:@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@TableName(“tbl_employee”)
packagecom.bjpowernode.mybatis_plustest.pojo;importcom.baomidou.mybatisplus.annotation.*;importlombok.AllArgsConstructor;importlombok.Data;importlombok.EqualsAndHashCode;importlombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode@TableName("tbl_employee")publicclassEmployee{@TableId(type=IdType.AUTO)privateInteger id;@TableField(value="last_name")privateString lastName1;privateString email;privateInteger gender;privateInteger age;//逻辑删除的方法 就是数据库中的数据不删除.但是查询出的数据没有了。//当数据库中的字段的值为1的时候,表示逻辑删除成功。//逻辑删除后的数据不能被修改。//逻辑删除必须使用创建集合的办法 List<Long> list = Arrays.asList(220L);@TableLogicprivateInteger is_deleted;}
6、创建dao层,创建mapper包,创建对应实体类的接口,创建对象
注意:继承BaseMapper接口,并且BaseMapper接口必须指定实体类的类型,mapper文件的名字为s实体类m名+mapper
packagecom.bjpowernode.mybatis_plustest.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importorg.apache.ibatis.annotations.Mapper;@Mapper (指定实体类的类型)publicinterfaceEmployeemapperextendsBaseMapper<Employee>{}
6.1在启动类上加入扫描dao层包的注解
注意:copypath选最后一个
packagecom.bjpowernode.mybatis_plustest;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.bjpowernode.mybatis_plustest.mapper")publicclassMybatisPlusTestApplication{publicstaticvoidmain(String[] args){SpringApplication.run(MybatisPlusTestApplication.class, args);}}
7、创建测试类
注意:测试类在src/test路径下,创建时加@SpringBootTest依赖就成了测试类
packagecom.bjpowernode.mybatis_plustest;importcom.bjpowernode.mybatis_plustest.mapper.Employeemapper;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.Map;@SpringBootTestclassMybatisPlusTestApplicationTests{@AutowiredprivateEmployeemapper employeemapper;@TestvoidcontextLoads(){List<Employee> list= employeemapper.selectList(null);
list.forEach(System.out::println);}@TestpublicvoidtestInsert(){Employee user=newEmployee();
user.setAge(24);
user.setLastName("最后");
user.setEmail("1271839347@qq.com");
user.setGender(0);int insert= employeemapper.insert(user);System.out.println("添加的行数是:"+insert);System.out.println("id"+user.getId());}@TestpublicvoidtestDelete(){//删除的方法// int i = employeemapper.deleteById(8);// System.out.println("返回的值是"+i);//// //删除,使用Map集合做条件过滤// Map<String,Object> map=new HashMap<>();// map.put("last_name","white");// map.put("age",35);// int result = employeemapper.deleteByMap(map);// System.out.println("result:"+result);(使数据转换为集合的方法)
注意:集合中的数据对应数据库中的id字段,但是要加longList<Long> list=Arrays.asList(1L,2L,3L);int result2= employeemapper.deleteBatchIds(list);System.out.println("result="+result2);}}
7、增强功能(自定义功能)
7.1 在resources目录下创建mapper包,创建mybatis-mapper文件,创建后默认是接口名.xml文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
接口的全路径<mapper namespace="com.bjpowernode.mybatis_plustest.mapper.Employeemapper">
select对应查询方法 对应接口中的方法名 接口中方法的返回值<select id="selectMapByIdPang" resultType="map">
select last_name,email,gender,age from tbl_employee where id=#{id}</select></mapper>
7.1dao层中添加方法
packagecom.bjpowernode.mybatis_plustest.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importjdk.nashorn.internal.ir.CallNode;importorg.apache.ibatis.annotations.Mapper;importjava.util.Map;@MapperpublicinterfaceEmployeemapperextendsBaseMapper<Employee>{//接口中写方法Map<String,Object>selectMapByIdPang(Integer id);}
8、service层的编写
8.1编写对应的service包,service中的类的名字是实体类的名+service
service层中继承IService方法泛型是对应的实体类
packagecom.bjpowernode.mybatis_plustest.service;importcom.baomidou.mybatisplus.extension.service.IService;importcom.bjpowernode.mybatis_plustest.pojo.Employee;//继承IService方法publicinterfaceEmployeeServiceextendsIService<Employee>{}
8.2
创建对应的实现类实现类名是实体类+Service+Impl
8.3
实现自己创建的service,并且继承Mybatis-Plus框架的方法ServiceImpl<mapper文件, 实体类>
packagecom.bjpowernode.mybatis_plustest.service.impl;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importcom.bjpowernode.mybatis_plustest.mapper.Employeemapper;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importcom.bjpowernode.mybatis_plustest.service.EmployeeService;//ServiceImplMybatis-Plus中的方法publicclassEmployeeServiceImplextendsServiceImpl<Employeemapper,Employee>implementsEmployeeService{}
9、serveice层方法的测试
9.1、测试查询数据总数和添加方法的测试
在测试中调用service层,加入@SpringBootTest注解
packagecom.bjpowernode.mybatis_plustest;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importcom.bjpowernode.mybatis_plustest.service.EmployeeService;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjava.util.ArrayList;importjava.util.List;@SpringBootTestpublicclassMyBatisPlusApplicationTests{@AutowiredprivateEmployeeService employeeService;@TestpublicvoidtestGetCount(){//查询数据库中总数据数的方法。int count= employeeService.count();System.out.println("总记录数是:"+count);}@Test//测试批量添加的方法publicvoidtestInsertMore(){//创建集合List<Employee> list=newArrayList<>();//利用for循环批量创建对象for(int i=1;i<=10;i++){Employee employee=newEmployee();
employee.setLastName("盘网上搜"+i);
employee.setAge(20+i);//employee.setEmail("@121212");//employee.setGender(0);//把对象放入集合
list.add(employee);}//调用Mybatis_Puls中的方法插入boolean b= employeeService.saveBatch(list);System.out.println(b);}}
9.2增改删查的测试
packagecom.bjpowernode.mybatis_plustest;importcom.bjpowernode.mybatis_plustest.mapper.Employeemapper;importcom.bjpowernode.mybatis_plustest.pojo.Employee;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.Map;@SpringBootTestclassMybatisPlusTestApplicationTests{@AutowiredprivateEmployeemapper employeemapper;@TestvoidcontextLoads(){//查询的方法(全部查询)List<Employee> list= employeemapper.selectList(null);
list.forEach(System.out::printl