SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作

上文 SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发我们已经开发完了实体类
我们就可以做数据层了
目前来讲 数据层技术 使用了最大的自然是 MyBatis 但其实MyBatis-Plus在国内很多中小企业还是使用的挺多的

这次 我们主要是通过MyBatis-Plus和Druid来做这件事情
这两个工具的坐标呢 我们之前是已经导进去了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第1张图片
然后 找到项目配置文件 application.yml
添加如下数据库配置代码

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test
      username: root
      password: root
mybatis-plus:
  global-config:
    db-config:
      id-type: auto

SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第2张图片

这里这个不要直接复制 首先 前面的没什么 但 URL 我只想的是本地 3306端口 如果你没设置过 一般都是一样的 然后 指定后面的 下面的test数据库
类型 我们设置的 MySql
然后 下面 用户名和密码 因为我一直没动过 所以都是默认的 root
下面的配置 则是在告诉他 我们的id使用数据自增的特性

然后 做数据层接口
在启动类同目录下 创建 dao包
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第3张图片
下面创建一个接口 叫 bookDao
参考代码如下

package com.example.bookconfig.dao;

import com.example.bookconfig.domain.book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface bookDao {
    @Select("select * from book where id = #{id}")
    book getById(Integer id);
}

我们想用 @Mapper 声明MyBatis
然后 写了一个函数 用Select挂了sql上去 函数接收一个 参数id 数字类型 sql的意思大体就是通过id寻找对应的一条数据

但是 现在我们数据库的book显然没有数据啊 那么 我们就来给他加一条 还是打开MySql管理工具
进入查询 输入并运行sql

INSERT INTO `book`(`type`,`name`,`description`)
VALUES(1,"小猫猫","超级可爱");

SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第4张图片
这就是个添加语句 因为 id是一个主键自动增长的字段 我们不用管 所以 type 1 name 小猫猫 description 超级可爱
运行成功后 我们再次查看book表
可以看到 这条数据就加进去了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第5张图片
然后 我们来到测试类
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第6张图片

编写代码如下

package com.example.bookconfig;

import com.example.bookconfig.dao.bookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class BookConfigApplicationTests {

    @Autowired
    private bookDao bookDao;

    @Test
    void contextLoads() {
        System.out.println(bookDao.getById(1));
    }
}

这里 调用了 我们刚刚写的bookDao接口中的getById方法查询了id等于1的数据
我们右键运行测试类
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第7张图片
运行结果如下
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第8张图片
也是成功帮我找到了这条数据

当然 我们这里只是试一下能不能跑起来 Mp不会这么开发 他让我自己这样写sql太麻烦了 很多东西它都帮你封装好了
我们直接将bookDao接口 的代码修改如下

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bookconfig.domain.book;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface bookDao extends BaseMapper<book> {

}

我们自己通过继承BaseMapper接口 来使用其中的函数 然后 泛型为 操作book实体类 你不指定实体类 你肯定要告诉他你要操作哪个表 哪个类对吧
他就会通过你给他的类 去寻找同名的表

这里 我们按住Ctrl 鼠标点进去看一下
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第9张图片
这个接口中就自带这么多操作
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第10张图片
我们测试类直接将getById 改成 selectById就好了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第11张图片
运行结果如下
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第12张图片
很明显 根据id查询就OK了 然后 我们来测试一下其他几个方法
先是添加
我们在测试类编写如下代码

package com.example.bookconfig;

import com.example.bookconfig.dao.bookDao;
import com.example.bookconfig.domain.book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class BookConfigApplicationTests {

    @Autowired
    private bookDao bookDao;

    @Test
    void contextLoads() {
        book book = new book();
        book.setType(0);
        book.setName("母猪的产后护理");
        book.setDescription("深度研究母猪产后护理的高级哲学以及母猪的历史价值");
        bookDao.insert(book);
    }
}

简单说 我们定义了一个book对象 通过set方法 将他的几个值都给了内容
还是那句话 id不需要管 因为是有自增属性的
然后 通过BaseMapper提供的insert方法将对象的内容插入到数据库中去 我们运行完代码查看数据库

这条数据就成功进来了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第13张图片
然后 我们在测试类中编写如下代码

book book = new book();
book.setId(1);
book.setType(0);
book.setName("java从入门到放弃");
book.setDescription("讲述当代打工人从入学被坑到弃坑投奔其他行业的悲惨经历");
bookDao.updateById(book);

BaseMapper更改数据的方式叫updateById
因为他要根据id做更改 所以 我们还是要用set将id赋值 告诉他改第几条
然后 我们记好数据库中 id为1数据的内容
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第14张图片
我们运行代码 再去数据库中查看book表 数据如下 很明显已经修改成功了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第15张图片
然后 我们编写代码如下

bookDao.deleteById(2);

没错 根据id删除的方法叫 deleteById
我们将id为2 就是我们刚加进去的数据给他干掉
运行代码然后 去数据库刷新 book表
很明显 第二条数据就被干掉了
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第16张图片
不过这样 不太方便我们看查询全部数据的效果 我们重新执行一次添加的代码将数据加回来
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第17张图片
这样就会好一点

然后 我们在测试类中编写代码如下

System.out.println(bookDao.selectList(null));

selectList是用来查询全部的方法 但是 这个要写条件 但我们就想查全部 那就直接 传个null给他
运行结果如下
SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作_第18张图片
可以看到 他是查询到了全部的数据

你可能感兴趣的:(数据库,mybatis,java)