SSMP整合案例第二步 数据层dao开发及实现特殊查询

简介: SSMP整合案例第二步 数据层dao开发及实现特殊查询

总述

数据层开发

数据层实现Dao层

理解了。通常情况下,数据层的实现会包括DAO(Data Access Object)层,它是用来实现数据访问逻辑的一部分。DAO层的主要责任是与数据存储(例如数据库)进行交互,执行数据的CRUD操作(创建、读取、更新、删除)。下面我会解释一下DAO层的基本概念和作用。

DAO层的作用

  • 解耦数据访问逻辑:将数据访问逻辑与业务逻辑分离,提高代码的模块化和可维护性。
  • 提供数据访问接口:通过DAO接口,其他层(如服务层)可以调用统一的方法来访问数据,而不必关心底层数据库的细节。
  • 支持事务控制:DAO层通常会支持事务处理,确保数据操作的一致性和可靠性。

总结

数据层的实现中包括DAO层,它是实现数据访问的核心部分,定义了数据操作的接口并提供具体的实现。通过良好设计的DAO层,可以有效地管理和操作数据,同时提高系统的可扩展性和性能。

在配置文件里引入MyBatisPlus和Druid的坐标

MyBatisPlus 的坐标在添加起步依赖的时候不能手动添加

只能在maven项目的pom文件中添加坐标后重新构建

导入Mybatis的坐标

写配置文件 注意配置文件是yml

server:
  port: 80
 
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
 
# 专门用来配置的对象datasource
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
      username: root
      password: 123456
 
# 配置mybatis-plus
mybatis-plus:
  global-config:
    db—config:
      table-prefix: tbl_

接下来是做数据层接口

package com.bigdata1421.ssmp.dao;
 
import com.bigdata1421.ssmp.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
 
// Mybatis的数据层注解
@Mapper
public interface UserDao {
 
    @Select("select * from tbl_user where id= #{id}")
    User getById(Integer id);
 
}

测试运行

Mybatis plus快速开发方案

指定模块操作

数据层接口可以直接简写

package com.bigdata1421.ssmp.dao;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bigdata1421.ssmp.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
 
// Mybatis的数据层注解
@Mapper
public interface UserDao extends BaseMapper<User>{
    //Mybatis-plus
    //mp快速开发方案
 
//    @Select("select * from tbl_user where id= #{id}")
//    User getById(Integer id);
 
}

测试类直接调用Mybatis-plus统一父类的方法即可

即可进行增删改查的操作

这就是开发者越来越强的原因

测试一下

Mybatis-plus添加数据的id用的是雪花算法

我们需要在配置文件中设置

测试

package com.bigdata1421.ssmp.dao;
 
import com.bigdata1421.ssmp.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
 
@SpringBootTest
public class UserDaoTestCase {
 
    @Autowired
    private UserDao userDao;
 
    //根据ID查询
    @Test
    void testGetById(){
        System.out.println(userDao.selectById(1));
    }
 
    //增
    @Test
    void testSave(){
        User user=new User();
        user.setId(10);
        user.setName("李懿航");
        user.setAge(20);
        user.setGender(1);
        userDao.insert(user);
    }
 
    //改
    @Test
    void testUpdate(){
        User user=new User();
        user.setId(10);
        user.setName("李懿航");
        user.setAge(20);
        user.setGender(1);
        userDao.updateById(user);
    }
 
    //删
    @Test
    void testDelete(){
        userDao.deleteById(10);
    }
 
    //查询所有数据
    @Test
    void testGetAll(){
        System.out.println( userDao.selectList(null););
    }
 
    //分页查询
    @Test
    void testGetPage(){
    }
 
    //按条件查询
    @Test
    void testGetBy(){
    }
 
}

开发方案

小结

开启MP运行日志

在yml配置文件里配置mybatis的信息

# 配置mybatis-plus
mybatis-plus:
  global-config:
    db—config:
      table-prefix: tbl_
      id-type: auto
 
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

在控制台输出打印日志

后面功能上线运行后可不能开启日志

这些操作只能是我们在调试的打开日志

便于我们查看信息

分页查询

分页查询怎么去做呢

我们的分页操作就是在原始的查询操作上挂上limit关键字

往SQL语句后面添加默认内容

所以我们要创建一个拦截器

package com.bigdata1421.ssmp.config;
 
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;
 
//拦截器
//一个配置类注解 表示能被spring识别到
@Configuration
public class MPconfig {
    //第三方bean创建注解 创建一个bean容器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

启动类所在包及其子包下的所有bean都会被识别加载

我们加了@Configuration注解 而且 放在启动类所在包及其子包下

所以能被扫描到

这样就能实现分页查询

//分页查询
@Test
void testGetPage(){
    IPage page=new Page(1,3);
    //这是那一页的数据 每一页显示多少数据
    userDao.selectPage(page,null);
}

小结

完全就是一个固定格式

内部就是帮你去拼SQL

我们要在调试过程中去查看SQL语句

这样才能看见SQL语句动态变化

条件查询

//按条件查询
@Test
void testGetBy(){
    //容器
    QueryWrapper<User> qw=new QueryWrapper<>();
    //条件
    qw.like("name","高");
    //查询
    userDao.selectList(qw);
}

运行后我们主要看SQL语句和查询结果

安全性高的写法

用方法引用去写

但是我们要提高Mybatis - plus 的版本

void testGetBy2(){
    // select * from tbl_ where name like %高%
    //容器
    QueryWrapper<User> qw2=new QueryWrapper<User>();
    //条件
    qw2.like(User::getName,"高");
    //查询
    userDao.selectList(qw2);
}

以后

但是这种 如果传入的参数name是空

是会将 null 拼接到sql语句后进行查询的

这很显然不符合我们的规范

所以我们应该优化代码

小结

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

目录
相关文章
|
2月前
MyBatisPlus-标准数据层CRUD功能制作
MyBatisPlus-标准数据层CRUD功能制作
38 0
|
9天前
|
设计模式 JSON 前端开发
SSMP整合案例第四步 表现层controller开发及用Result进行统一消息处理
SSMP整合案例第四步 表现层controller开发及用Result进行统一消息处理
18 2
|
9天前
|
JSON 前端开发 JavaScript
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
15 2
|
14天前
|
NoSQL Java 数据库
SpringBoot实用开发篇第三章(数据层解决方案操作)
SpringBoot实用开发篇第三章(数据层解决方案操作)
|
9天前
|
存储 Java 数据库连接
SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展
SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展
9 0
|
9天前
|
SQL 前端开发 API
SSMP整合案例第一步 制作分析模块创建与开发业务实体类
SSMP整合案例第一步 制作分析模块创建与开发业务实体类
5 0
|
2月前
|
SQL Java 数据库连接
JAVAEE框架技术之15SSM综合案例 订单管理查询
JAVAEE框架技术之15SSM综合案例 订单管理查询
69 0
JAVAEE框架技术之15SSM综合案例 订单管理查询
|
2月前
|
数据安全/隐私保护
若依框架---为什么把添加和更新分成两个接口
若依框架---为什么把添加和更新分成两个接口
69 0
|
2月前
|
SQL 前端开发 Java
SpringBoot - 实践阿里巴巴【Manager 层_通用业务处理层】
SpringBoot - 实践阿里巴巴【Manager 层_通用业务处理层】
168 0
|
2月前
|
SQL 前端开发 Java
Hasor【环境搭建 01】SpringBoot集成Dataway接口配置服务(依赖+配置+数据库数据源初始化+注解添加+demo验证测试)
Hasor【环境搭建 01】SpringBoot集成Dataway接口配置服务(依赖+配置+数据库数据源初始化+注解添加+demo验证测试)
112 0