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

2024-05-25 07:28

本文主要是介绍SSMP整合案例第二步 数据层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.Driverurl: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTCusername: rootpassword: 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 {@Autowiredprivate UserDao userDao;//根据ID查询@Testvoid testGetById(){System.out.println(userDao.selectById(1));}//增@Testvoid testSave(){User user=new User();user.setId(10);user.setName("李懿航");user.setAge(20);user.setGender(1);userDao.insert(user);}//改@Testvoid testUpdate(){User user=new User();user.setId(10);user.setName("李懿航");user.setAge(20);user.setGender(1);userDao.updateById(user);}//删@Testvoid testDelete(){userDao.deleteById(10);}//查询所有数据@Testvoid testGetAll(){System.out.println( userDao.selectList(null););}//分页查询@Testvoid testGetPage(){}//按条件查询@Testvoid testGetBy(){}}

开发方案

小结

开启MP运行日志

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

# 配置mybatis-plus
mybatis-plus:global-config:db—config:table-prefix: tbl_id-type: autoconfiguration: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容器@Beanpublic 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语句后进行查询的

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

所以我们应该优化代码

小结

这篇关于SSMP整合案例第二步 数据层dao开发及实现特殊查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1000849

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用