MybatisPlus 项目中使用

news2024/11/25 22:30:35

 大家好 , 我是苏麟 , 今天带来 MybatisPlus 的简单使用 .


官方网站 :  MyBatis-Plus (baomidou.com)

开始使用

初步体验

引入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

根据数据库表创建实体类

@Data
public class Book {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String name;
    private String description;
}

创建类

@Mapper
public interface BookDao extends BaseMapper<Book> {
}

Dao接口要想被容器扫描到,有两种解决方案:

方案一:在Dao接口上添加@Mapper注解,并且确保Dao处在引导类所在包或其子包中 该方案的缺点是需要在每一Dao接口中添加注解

方案二:在引导类上添加@MapperScan注解,其属性为所要扫描的Dao所在包 该方案的好处是只需要写一次,则指定包下的所有Dao接口都能被扫描到,@Mapper就可以不 写。

测试类

@SpringBootTest
class SpringbootMybatisplusApplicationTests {

    @Autowired
    private BookDao bookDao;


    /**
     * 目标 : 添加
     * 有问题?
     */
    @Test
    void getSave() {
        Book book = new Book();
        book.setName("斗罗大陆");
        book.setDescription("佼佼战魂锤,巍巍昊天宗");
        bookDao.insert(book);
    }


    /**
     * 目标 : 修改
     */
    @Test
    void updateTest() {
        Book book = new Book();
        book.setId(4);
        book.setName("斗罗大陆");
        book.setDescription("佼佼战魂锤,巍巍昊天宗");
        bookDao.updateById(book);
    }

    /**
     * 目标 : 删除
     */
    @Test
    void deleteTest() {
        bookDao.deleteById(3);
    }


    /**
     * 目标 : 根据id查询
     */
    @Test
    void getByIdTest() {
        Book book = bookDao.selectById(1);
        System.out.println(book);
    }


    /**
     * 目标 : 查询全部
     */
    @Test
    void getAllTest() {
        List<Book> books = bookDao.selectList(null);
        System.out.println(books);
    }


    /**
     * 目标 : 分页查询
     * ctrl + h 查看接口实现类
     *
     * 需要一个配置类 开启分页
     */
    @Test
    void getByPage(){
        /**
         * 目标 :
         * current 当前页
         * size 一页有几条
         */
        IPage iPage = new Page(1,2);
        IPage page = bookDao.selectPage(iPage, null);
        System.out.println("当前第几页 : "+page.getCurrent());
        System.out.println("每页显示多少数 : "+page.getSize());
        System.out.println("一共多少页 : "+page.getPages());
        System.out.println("一共多少条数据 : "+page.getTotal());
        System.out.println("数据 : "+page.getRecords());
    }


}

分页的使用

使用分页的插件

/**
 * 配置MP的分页插件
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

分页查询的实现

    /**
     * 分页查询
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(@RequestParam(required = false, defaultValue = "1") int page,
                        @RequestParam(required = false, defaultValue = "10") int pageSize,
                        String name){
        log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);

        //构造分页构造器
        Page pageInfo = new Page(page,pageSize);

        //构造条件构造器
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();
        //添加过滤条件
        queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
        //添加排序条件
        queryWrapper.orderByDesc(Employee::getUpdateTime);

        //执行查询
        employeeService.page(pageInfo,queryWrapper);

        return R.success(pageInfo);
    }

如果想了解Wrapper请看 : MyBatisPlus.pdf (gitee.com)

 这期就到这里 下期见 ! 拜拜 !

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

byte-budddy: Unexpected type reference on method: 19

使用byte-buddy版本为1.10.1 在使用agent时&#xff0c;启动应用&#xff0c;报错如下 造成报错的相关代码 Data public class CloudAccountUpdateReq implements Serializable {private List<Valid CloudAccountDiscountDTO> discountList;}已修复 issue: https://gi…

ClassLoad Of Java

序言 简单学习下ClassLoad的过程cuiyaonan2000163.com 过程 我们有一个x.java文件通过执行javac命令可以变成x.class文件&#xff0c;当我们调用Java命令的时候class文件会被装载到内存中&#xff0c;这个过程叫做classloader。 一般情况下我们自己写代码的时候会用到Java的类…

(6)(6.6) 恢复任务回放

文章目录 前言 6.6.1 配置 6.6.2 工作原理 6.6.3 局限性 前言 本页介绍了什么是"任务继续时后退"功能以及如何使用该功能。 &#xff01;Note 从 4.1 版起&#xff0c;Plane、Copter 和 Rover 均可使用此功能。 在某些应用或运行区域&#xff0c;为了消除冲突…

Nat. Photonics:实时捕获了光子的量子纠缠!

渥太华大学的研究人员与罗马大学的Danilo Zia和Fabio Sciarrino合作&#xff0c;展示了一种新技术&#xff0c;可以实时可视化两个纠缠光子&#xff08;构成光的基本粒子&#xff09;的波函数。 研究成果以“Interferometric imaging of amplitude and phase of spatial biphot…

如何在 Opera 中启用DNS over HTTPS

DNS over HTTPS&#xff08;基于HTTPS的DNS&#xff09;是一种更安全的浏览方式&#xff0c;但大多数 Web 浏览器默认情况下不启用它。了解如何在 Opera 浏览器中启用该功能。 您可能不知道这一点&#xff0c;但您的网络浏览器并不像您希望的那样私密或安全。您会看到&#xff…

华为官方翻新产品上架首款PC产品,售价3699元起!

8月24日&#xff0c;华为官方翻新产品上架首款PC——HUAWEI Matebook 14s&#xff01;产品搭载2.5K高刷触控屏&#xff0c;有第11代英特尔酷睿i7-113700H和酷睿i5-11300H两种处理器可选择&#xff0c;售价3699元起&#xff01; 华为官方翻新PC&#xff0c;品质接近新机&…

node.js 简单使用 开始

1.概要 问&#xff1a;体验一下node.js 看一下如何运行。 答&#xff1a;使用命令 node 文件名.js 2.举例 2.1 代码准备(main.js) console.log(第一行node.js代码); 2.2 运行效果

Linux内核学习(八)—— 内存管理(基于Linux 2.6内核)

目录 一、页&#xff08;page&#xff09; 二、区&#xff08;zone&#xff09; 三、页操作 四、kmalloc() 五、vmalloc() 六、slab 分配器 七、在栈上的静态分配 一、页&#xff08;page&#xff09; 内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻 …

Crontab定时任务运行Docker容器(Ubuntu 20)

对于一些离线预测任务&#xff0c;或者D1天的预测任务&#xff0c;可以简单地采用Crontab做定时调用项目代码运行项目 Crontab简介&#xff1a; Linux crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&…

微信通过好友自动回复怎么设置?微信怎么设置自动回复?

当通过了很多客户之后&#xff0c;员工没有办法及时的给每位客户发送欢迎消息&#xff0c;并且发送欢迎消息时也是由员工一个一个去发送给客户&#xff0c;这样既浪费了大量的时间&#xff0c;又给员工增加工作负担&#xff0c;降低工作效率。 我们可以设置自动发欢迎语&#…

小猫爪:嵌入式小知识16-XCP协议简介

小猫爪&#xff1a;嵌入式小知识16-XCP协议简介 0 目录1 前言2 XCP协议简介2.1 各种包2.1 CMD2.2 RES2.3 ERR2.4 EV2.5 SERV2.6 DAQ2.7 STIM2.8 总结 2.2 错误处理2.2.1 Time-out Error Handling2.2.2 Error Code Error Handling END 0 目录 小猫爪&#xff1a;嵌入式小知识15…

More Effective C++学习笔记(4)

目录 条款16&#xff1a;谨记 80 - 20 法则条款17&#xff1a;考虑使用lazy evaluation&#xff08;缓式评估&#xff09;条款18&#xff1a;分期摊还预期的计算成本条款19&#xff1a;了解临时对象来源条款20&#xff1a;协助完成 “ 返回值优化 ”条款21&#xff1a;利用重载…

余压监控在建筑加压送风系统中的应用

安科瑞 华楠 摘 要&#xff1a;从风量、风管和风口的设计、防烟部位正压控制方式等角度&#xff0c;分析了加压送风系统设计中需要注意的几点问题&#xff1a;风量的确定需合理有据&#xff1b;楼梯间风管和风口的设计需考虑均匀送风要求&#xff0c;前室风口设计确保不同楼层…

【地理图库】晨昏线示意图

声明&#xff1a;本资料整理&#xff0c;仅供学习&#xff01;

JNPF快速开发平台:释放您的创造力,加速企业数字化转型

一、前言 在当今的数字化时代&#xff0c;企业需要快速响应市场变化&#xff0c;不断迭代和优化业务流程&#xff0c;以保持竞争力。然而&#xff0c;传统软件开发方式往往无法满足企业对于快速开发和灵活部署的需求。JNPF快速开发平台旨在解决这一问题&#xff0c;为企业提供高…

CCF HPC China2023 | 盛大开幕,邀您关注澎峰科技

2023年8月24日&#xff0c;以“算力互联智领未来”为主题的第十九届全国高性能计算学术年会&#xff08;CCF HPC China 2023&#xff09;在青岛红岛国际会议展览中心拉开帷幕。特邀嘉宾涵盖行业大咖&#xff0c;主持阵容同样是“重量级”——来自国家并行计算机工程技术研究中心…

如何快速打造线上展厅?线上展厅可以用在哪些行业?

引言&#xff1a; 随着科技的迅速发展&#xff0c;线上展厅作为一种创新的营销方式&#xff0c;正逐渐引领着不同行业的营销风潮。线上展厅以其独特的虚拟体验&#xff0c;为企业搭建了一个无界限的展示平台&#xff0c;让用户能够在虚拟空间中感受产品、服务与品牌文化。 一…

Java对象的初始化顺序

对象的初始化顺序(父类永远在子类前面&#xff0c;属性和方法谁写在上边谁先执行)&#xff1a; 静态(只执行一次)--->非静态--->构造方法 静态成员和static块-->普通成员和非static块-->构造函数。 存在继承&#xff1a; 父类静态成员和static块-->子类静态成…

Resnet模型详解

1、Resnet是什么&#xff1f; Resnet是一种深度神经网络架构&#xff0c;被广泛用于计算机视觉任务&#xff0c;特别是图像分类。它是由微软研究院的研究员于2015年提出的&#xff0c;是深度学习领域的重要里程碑之一。 2、网络退化问题 理论上来讲&#xff0c;随着网络的层…

干货分享:可证明安全的隐私计算

“隐语”是开源的可信隐私计算框架&#xff0c;内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择&#xff0c;提供丰富的联邦学习算法和差分隐私机制 开源项目&#xff1a;github.com/secretflowgitee.com/secretflow 以下文章来源于DataFunTalk &#xff0c;作者洪澄 D…