1.pom.xml文件需要的jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis_plus_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>com.cooldatasoft</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
</parent>
<dependencies>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql-connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!--springboot-test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>com/zengjx/mapper/*Mapper.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
2.application.yml中的一些配置
server:
port: 1010 #端口
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
username: root
password: 123456 #链接数据库
type: com.alibaba.druid.pool.DruidDataSource #使用driud连接池
mybatis-plus:
mapper-locations: classpath:com/zengjx/mapper/*Mapper.xml
type-aliases-package: com.zengjx.domain
3.启动类
package com.zengjx;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author fastrabbit
* @date 2021/5/20 10:40
*/
@SpringBootApplication
@MapperScan("com.zengjx.mapper")
public class MybatisPlusApp {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApp.class, args);
}
}
4.配置类
package com.zengjx.config;
/**
* @author fastrabbit
* @date 2021/5/21 10:18
*/
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
/**
* 获取分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
}
5.实体类
package com.zengjx.domain;
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.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author fastrabbit
* @date 2021/5/20 10:58
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "user")
public class User {
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Integer id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 手机号码
*/
private Long phone;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 订单外键
*/
@TableField(value = "orderId")
private Integer orderId;
}
6.编写测试类
package com.zengjx.test;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zengjx.domain.User;
import com.zengjx.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author fastrabbit
* @date 2021/5/20 11:28
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusTest {
@Autowired
UserMapper userMapper;
@Test
public void mybatisPlusTest(){
/**
* 根据id查询数据
*/
User user1 = userMapper.selectById(1);
System.out.println("通过id查询数据");
System.out.println(user1);
/**
* 通过条件构造器查询指定的一条数据
*/
QueryWrapper<User> userQueryWrapper1 = new QueryWrapper<>();
userQueryWrapper1.eq("username", "张三");
userQueryWrapper1.gt("phone", 100);
User user2 = userMapper.selectOne(userQueryWrapper1);
System.out.println("根据条件构造器查询指定的一条数据");
System.out.println(user2);
/**
* 通过id数组查询数据
*/
ArrayList<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
List<User> users1 = userMapper.selectBatchIds(ids);
System.out.println("通过数组id查询到数据");
users1.forEach(System.out::println);
/**
* 通过map查询到数据 key为表的字段 value为字段的值
*/
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("username", "张三");
stringObjectHashMap.put("password", 123456);
List<User> users2 = userMapper.selectByMap(stringObjectHashMap);
System.out.println("通过map查询到数据");
users2.forEach(System.out::println);
/**
* 分页查询
*/
QueryWrapper<User> userQueryWrapper2 = new QueryWrapper<>();
Page<User> userPage = new Page<>(1 , 5);
//第一个参数为分页对象Page 第二个参数为条件构造器(如果为空表示查询所有的数据)
userMapper.selectPage(userPage, null);
List<User> users3 = userPage.getRecords();
System.out.println("分页查询到数据");
users3.forEach(System.out::println);
/**
* 根据条件构造器查询出所有数据
*/
QueryWrapper<User> userQueryWrapper3 = new QueryWrapper<>();
//参数为条件构造器(如果为空表示查询所有的数据)
List<User> users4 = userMapper.selectList(null);
System.out.println("根据条件构造器查询出所有数据");
users4.forEach(System.out::println);
/**
* 查询表中指定字段的所有数据
*/
QueryWrapper<User> userQueryWrapper4 = new QueryWrapper<>();
userQueryWrapper4.select(User.class , e -> e.getColumn().equals("username"));
List<Map<String, Object>> maps1 = userMapper.selectMaps(userQueryWrapper4);
System.out.println("根据条件构造器查询出表中字段的所有数据");
for (Map<String, Object> stringObjectMap : maps1) {
for (String s : stringObjectMap.keySet()) {
System.out.println(stringObjectMap.get(s));
}
}
/**
* 查询出数据总量
*/
QueryWrapper<User> userQueryWrapper5 = new QueryWrapper<>();
//参数为条件构造器(如果为空表示查询所有的数据)
Integer integer = userMapper.selectCount(null);
System.out.println("根据条件构造器查询出满足条件的数据量");
System.out.println(integer);
//======================================================================================================================
/**
* 添加数据
*/
User user3 = new User();
user3.setUsername("许褚");
user3.setAddress("北魏");
user3.setEmail("123213421233@163.com");
user3.setPassword("241423315");
user3.setPhone(5121123L);
user3.setOrderId(8);
userMapper.insert(user3);
System.out.println("添加数据成功");
//======================================================================================================================
/**
* 通过id修改数据
*/
User user4 = new User();
user4.setId(7);
user4.setUsername("关羽");
user4.setAddress("蜀汉");
user4.setEmail("12331213@163.com");
user4.setPassword("4412315");
user4.setPhone(213151223123L);
user4.setOrderId(7);
userMapper.updateById(user4);
System.out.println("修改数据成功");
/**
* 通过条件构造器修改指定的一些数据
*/
QueryWrapper<User> userQueryWrapper6 = new QueryWrapper<>();
userQueryWrapper6.eq("username" , "关羽");
User user5 = new User();
user5.setUsername("张飞");
user5.setAddress("蜀汉");
user5.setEmail("12331213@163.com");
user5.setPassword("4412315");
user5.setPhone(213151223123L);
user5.setOrderId(7);
userMapper.update(user5, userQueryWrapper6);
System.out.println("通过条件构造器修改指定的一些数据");
//======================================================================================================================
/**
* 通过id删除指定的数据
*/
userMapper.deleteById(8);
System.out.println("通过id删除指定的一条数据");
/**
* 通过id数组删除指定的一些数据
*/
ArrayList<Integer> integers1 = new ArrayList<>();
integers1.add(7);
integers1.add(6);
userMapper.deleteBatchIds(integers1);
System.out.println("通过id数组删除指定的一些数据");
/**
* 通过条件选择器删除指定的一些数据
*/
QueryWrapper<User> userQueryWrapper7 = new QueryWrapper<>();
userQueryWrapper7.eq("username", "刘能");
userMapper.delete(userQueryWrapper7);
System.out.println("通过条件选择器删除指定的一些数据");
/**
* 删除指定map条件的数据
*/
HashMap<String, Object> map = new HashMap<>();
map.put("username" , "王五");
map.put("password" , "1234556");
userMapper.deleteByMap(map);
System.out.println("删除指定map条件的数据");
}
}