IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Mybatis-Plus整合SpringBoot实战教程 -> 正文阅读

[Java知识库]Mybatis-Plus整合SpringBoot实战教程

一、引言

MyBatis-Plus官网 https://mybatis-plus.com

MyBatis-Plus(简称 MP)是一个 在MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生。- - -引自官网
在这里插入图片描述
框架结构
在这里插入图片描述

二、环境搭建

1、创建数据库并新建user表

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 '年龄',
	bir timestamp NULL DEFAULT NULL COMMENT '出生日期',
	PRIMARY KEY (id)
);

2、 使用Spring Initializer快速初始化一个 Spring Boot 工程

3、添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <!--MySQL依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--lombok依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!--springboot test依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--mybatis-plus依赖-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>
    <!--阿里巴巴druid依赖-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.9</version>
    </dependency>
</dependencies>

4、配置

application.yml 配置文件中添加如下配置:

#数据源相关配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis-plus?characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
#日志等级配置
logging:
  level:
    root: info
    com.uos.dao: debug

注意:
? ? 1. 此时无需添加mybatis的相关配置;
? ? 2. 如果mysql是5.x以上版本,请将driver-class-name设置为com.mysql.cj.jdbc.Driver,否则后续测试时会报错!

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

@SpringBootApplication
@MapperScan("com.uos.dao")
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }
}

5、编码

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

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Accessors(chain = true)
public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;
}

编写DAO类 UserDAO.java

public interface UserDAO extends BaseMapper<User> {
}

6、开始使用

添加测试类,进行功能测试:

@SpringBootTest
public class TestUserDao {

    @Autowired
    private UserDAO userDAO;

    /*查询所有*/
    @Test
    public void testFindAll(){
        List<User> users = userDAO.selectList(null);
        users.forEach(user -> System.out.println("user=" + user));
    }
}

三、常用注解

1、@TableName 表名注解

在这里插入图片描述

@TableName(value = "t_user")      

注意:该注解是写在实体类名的上方,默认将类名作为表名

2、 @TableId 主键注解

在这里插入图片描述

 @TableId(value = "id", type = IdType.AUTO)      //主键注解
 private String id;

3、 @TableField 字段注解(非主键)

@TableField(value = "username")         //和数据库字段进行映射
private String name;
private Integer age;
private Date bir;
@TableField(exist = false)              //该字段不和数据库进行映射
private String email;

四、常见方法使用

1、查询方法

  • 查询所有方法
/*查询所有*/
@Test
public void testFindAll(){
	List<User> users = userDAO.selectList(null);
	users.forEach(user -> System.out.println("user=" + user));
}
  • 查询一个方法
 /*查询一个*/
@Test
public void testFindById(){
    User user = userDAO.selectById("2");
    System.out.println(user);
}
  • 条件查询方法
/*条件查询*/
@Test
public void testFind(){
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    //queryWrapper.eq("age", 22);     //设置等值查询
    //queryWrapper.lt("age", 29); //设置小于查询
    //queryWrapper.le("age", 29); //设置小于等于查询
    //queryWrapper.gt("age", 22); //设置大于查询
    queryWrapper.ge("age", 22); //设置大于等于查询
    List<User> users = userDAO.selectList(queryWrapper);
    users.forEach(user -> System.out.println("user=" + user));
}
  • 模糊查询方法
/*模糊查询*/
@Test
 public void testFindLike(){
     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
     //like:只要包含val中的值即可
     //queryWrapper.like("username","三");
     //likeLeft:查询尾部包含val值的数据
     //queryWrapper.likeLeft("username","三");
     //likeRight: 查询开头包含val值的数据
     queryWrapper.likeRight("username","张");
     List<User> users = userDAO.selectList(queryWrapper);
     users.forEach(user -> System.out.println("user=" + user));
 }
  • 分页查询方法
/*分页查询*/
@Test
public void testFindByPage(){
    IPage<User> page = new Page(1,2);
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.gt("age", 22);
    IPage<User> userIPage = userDAO.selectPage(page, queryWrapper);
    long total = userIPage.getSize();
    System.out.println("记录数:" + total);
    userIPage.getRecords().forEach(user -> System.out.println(user));
}

注意:分页查询插件需要添加如下配置方可生效!
创建config包,在该包中创建MybatisPlusConfig

@EnableTransactionManagement
@Configuration
@MapperScan("com.uos.dao")
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        return paginationInterceptor;
    }
}

2、添加方法

/*添加方法*/
@Test
 public void testSave(){
     User user = new User();
     user.setName("王五").setAge(26).setBir(new Date());
     userDAO.insert(user);
 }

3、修改方法

  • 基于id进行修改
 /*基于id进行修改*/
 @Test
 public void testUpdateById(){
     User user = userDAO.selectById("2");
     user.setName("二麻");
     userDAO.updateById(user);
 }
  • 批量修改
 /*批量修改*/
@Test
public void testUpdate(){
    User user = new User();
    user.setName("殿下");
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("age", 22);
    userDAO.update(user, queryWrapper);
}

4、删除方法

  • 基于id进行删除
 /*根据Id进行删除*/
 @Test
 public void testDeleteById(){
     userDAO.deleteById("2");
 }
  • 批量删除
 /*批量删除*/
 @Test
  public void testDelete(){
      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.ge("age", 26);
      userDAO.delete(wrapper);
  }

五、多数据源配置实现读写分离

1、引入dynamic-datasource-spring-boot-starter依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2、配置数据源

spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/mybatis-plus?characterEncoding=UTF-8&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
        slave_1:
          url: jdbc:mysql://localhost:3306/mybatis-plus1?characterEncoding=UTF-8&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave_2:
          url: jdbc:mysql://localhost:3306/mybatis-plus2?characterEncoding=UTF-8&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

3、使用 @DS 切换数据源

在这里插入图片描述

  • 新建UserService 接口
public interface UserService {

    /*查询所有用户*/
    List<User> findAllUser();

    /*保存用户*/
    void saveUser(User user);
}
  • 新建UserServiceImpl实现类
@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDAO userDAO;

    @Override
    @DS("slave_1")
    public List<User> findAllUser() {
        return userDAO.selectList(null);
    }

    @Override
    public void saveUser(User user) {
        userDAO.insert(user);
    }
}

4、测试代码

@SpringBootTest
public class TestUserService {

    @Autowired
    private UserService userService;


    /*查询所有*/
    @Test
    public void testFindAll(){
        List<User> users = userService.findAllUser();
        users.forEach(user -> System.out.println("user=" + user));
    }

    /*保存*/
    @Test
    public void testSave(){
        User user = new User();
        user.setName("哈哈").setAge(55).setBir(new Date());
        userService.saveUser(user);
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:20:27  更:2022-05-12 16:20:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:57:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码