SpringBoot集成MybatisPlus并应用

建一张表
在这里插入图片描述
见表sql如下:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
	id BIGINT(20) NOT NULL COMMENT '主键ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	age INT(11) NULL DEFAULT NULL COMMENT '年龄',
	email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY (id)
);

在表中插入数据:

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

引入 Spring Boot Starter 父工程:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/>
</parent

引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、lombok、mybatis 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>
   <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
</dependencies>

在 application.yml 配置文件中添加 mybatis 数据库的相关配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
    username: root
    password: 123

server:
  servlet:
    context-path: /lx

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

package com.lx;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.lx.mapper")
public class LxApplication {

    public static void main(String[] args) {
        SpringApplication.run(LxApplication.class, args);
    }
}

编写实体类 User.java(此处使用了 Lombok 简化代码):

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

编写Mapper类 UserMapper.java

public interface UserMapper extends BaseMapper<User> {

}

Wrapper设定条件的方法如下:
在这里插入图片描述
添加测试类,进行功能测试:

package com.lx;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lx.entity.User;
import com.lx.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.List;

@RunWith(SpringRunner.class)
@SpringBootTest
 /* 说明:一下接口只能通过mapper使用,若想通过service调用请参照mybatis-Plus官方文档
        通用 CRUD 封装BaseMapper接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
        泛型 T 为任意实体对象
        参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
        对象 Wrapper 为 条件构造器,所有的Wrapper都使用QueryWrapper

        1.int insert(T entity);
            插入一条记录
            @param entity 实体对象
            @return 插入成功记录数
         2.int deleteById(Serializable id);
            根据 ID 删除
            @param id 主键ID
            @return 删除成功记录数
         3.int deleteByMap(Map<String, Object> columnMap);
            根据 columnMap 条件,删除记录
            @param columnMap 表字段 map 对象
            @return 删除成功记录数
         4.int delete(Wrapper<T> wrapper);
            根据 entity 条件,删除记录
            @param wrapper 实体对象封装操作类(可以为 null)
            @return 删除成功记录数
         5.int deleteBatchIds(Collection<? extends Serializable> idList);
             删除(根据ID 批量删除)
             @param idList 主键ID列表(不能为 null 以及 empty)
             @return 删除成功记录数
         6.int updateById(T entity);
             根据 ID 修改
             @param entity 实体对象
             @return 修改成功记录数
         7.int update(T entity,Wrapper<T> updateWrapper);
             根据 whereEntity 条件,更新记录
             * @param entity        实体对象 (set 条件值,可为 null)
             * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
             * @return 修改成功记录数
         8.T selectById(Serializable id);
            * 根据 ID 查询
            * @param id 主键ID
            * @return 实体
        9.List<T> selectBatchIds(Collection<? extends Serializable> idList);
            * 查询(根据ID 批量查询)
            * @param idList 主键ID列表(不能为 null 以及 empty)
            * @return 实体集合
        10.List<T> selectByMap(Map<String(列名), Object(值)> columnMap);
             * 查询(根据 columnMap 条件)
             * @param columnMap 表字段 map 对象
             * @return 实体集合
        11.T selectOne(Wrapper<T> queryWrapper);
             * 根据 entity 条件,查询一条记录
             * @param queryWrapper 实体对象
             * @return 实体
        12.Integer selectCount(Wrapper<T> queryWrapper);
             * 根据 Wrapper 条件,查询总记录数
             * @param queryWrapper 实体对象
             * @return 满足条件记录数
        13.List<T> selectList(Wrapper<T> queryWrapper);
             * 根据 entity 条件,查询全部记录
             * @param queryWrapper 实体对象封装操作类(可以为 null)
             * @return 实体集合
        14.List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper);
             * 根据 Wrapper 条件,查询全部记录
             * @param queryWrapper 实体对象封装操作类(可以为 null)
             * @return 字段映射对象 Map 集合
        15.List<Object> selectObjs(Wrapper<T> queryWrapper);
             * 根据 Wrapper 条件,查询全部记录
             * 注意: 只返回第一个字段的值
             * @param queryWrapper 实体对象封装操作类(可以为 null)
             * @return 字段映射对象集合
        16.IPage<T> selectPage(IPage<T> page,Wrapper<T> queryWrapper);
             * 根据 entity 条件,查询全部记录(并翻页)
             * @param page         分页查询条件(可以为 RowBounds.DEFAULT)
             * @param queryWrapper 实体对象封装操作类(可以为 null)
             * @return 实体分页对象
        17.IPage<Map<String, Object>> selectMapsPage(IPage<T> page, Wrapper<T> queryWrapper);
             * 根据 Wrapper 条件,查询全部记录(并翻页)
             * @param page         分页查询条件
             * @param queryWrapper 实体对象封装操作类
             * @return 字段映射对象 Map 分页对象
*/
public class LxApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void contextLoads() {
    }
    @Test
    public void testSelect() {
        List<User> userList = userMapper.selectList(null);

        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        QueryWrapper<User> age = queryWrapper
                 .isNull("name")
                .eq("age", 28)
        .isNotNull("email");

        List<User> users = userMapper.selectList(age);
        System.out.println("-------------------------------"+users);
        System.out.println("userList:"+userList);
    }

}

UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件

users[User(id=1, name=Jone, age=18, email=test1@baomidou.com), User(id=2, name=Jack, age=20, email=test2@baomidou.com), User(id=3, name=Tom, age=28, email=test3@baomidou.com), User(id=4, name=Sandy, age=21, email=test4@baomidou.com), User(id=5, name=Billie, age=24, email=test5@baomidou.com)]
userList:[User(id=1, name=Jone, age=18, email=test1@baomidou.com), User(id=2, name=Jack, age=20, email=test2@baomidou.com), User(id=3, name=Tom, age=28, email=test3@baomidou.com), User(id=4, name=Sandy, age=21, email=test4@baomidou.com), User(id=5, name=Billie, age=24, email=test5@baomidou.com)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值