ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

III-MybatisPlus、ORM思想

2022-02-21 15:02:39  阅读:172  来源: 互联网

标签:1.4 queryWrapper MybatisPlus 1.3 查询 ORM new QueryWrapper III


文章目录

1.MybatisPlus

1.1概述

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

1.2特点

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

1.3准备工作

1.3.1导入jar包

<!--spring整合mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

1.3.2编辑POJO对象

在这里插入图片描述

1.3.3编辑Mapper接口

说明: MP将常用的CURD操作进行封装.以后用户需要使用,只需要继承公共的业务接口即可.
在这里插入图片描述

1.3.4编辑YML文件

在这里插入图片描述

1.4总结

1.4.1对象封装数据

/**
     * /* //如果查询的结果不能保证 则使用list集合接收
     * List<User> userList = userMapper.selectList(null)/
     * 根据其它属性进行查询
     * 根据username="admin110" 进行查询
     * 组件: 条件构造器  用来封装where条件的.
     * Sql: select * from user where username="admin110"
     * 方式1: 利用对象封装数据
     */
    @Test
    public void test02(){
        User temp = new User();
        temp.setUsername("admin119"); //=号操作
        //条件构造器,会根据对象中不为null的元素动态拼接Sql
        QueryWrapper<User> queryWrapper = new QueryWrapper<>(temp);
        //如果可以保证查询的结果只有一个
        User user = userMapper.selectOne(queryWrapper);
        System.out.println(user);
    }

1.4.2转义字符方式

 /**
     * 需求: 查询ID > 5的用户
     * Sql: select * from user where id > 5
     * 转译字符:  >  gt, < lt, = eq
     *          >=  ge, <=le  != ne
     * 方式2: 利用逻辑运算符 实现Sql操作
     */
    @Test
    public void test03(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("id",5);
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }

1.4.3模糊查询

/**
     * 需求: 查询username 包含admin的数据,并且按照id降序排列
     * Sql: select * from user where username like "%admin%" order by id desc
     * 知识点:
     *  1. like      "%admin%"      左右都有%号
     *  2. likeLeft  "%admin"       左边有%号
     *  3. likeRight "admin%"       左边有%号
     */
    @Test
    public void test04(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("username","admin")
                    .orderByDesc("id");
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }

1.4.4in关键字

/**
     * 需求: 查询id=1,2,23,24的数据
     * Sql: select * from user where id in (1,2,23,24)
     * 注意事项: 使用in关键字时,最好使用包装类型.
     */
    @Test
    public void test05(){
        Integer[] ids = {1,2,23,24};
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("id",ids);
        //方式1: 利用条件构造器查询
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
        //方式2: 利用API查询
        List list = Arrays.asList(ids);
        List<User> userList2 = userMapper.selectBatchIds(list);
        System.out.println(userList2);
    }

1.4.5动态Sql查询

 /**
     * 需求: 动态查询数据,利用电话/邮箱查询数据
     * 疑问: MP特点 根据对象(POJO)中不为null的属性充当条件
     * API:
     *      eq(boolean true 拼接/false 不拼接, R column, Object val)
     *      StringUtils.hasLength(phone)
     */
    @Test
    public void test06(){
        String phone = "13111112222";
        String email = "";
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.eq(StringUtils.hasLength(phone), "phone",phone)
                    .eq(StringUtils.hasLength(email), "email",email);
        List<User> list = userMapper.selectList(queryWrapper);
        System.out.println(list);
    }

2.ORM思想

2.1ORM说明

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。

总结:以面向对象的方式操作数据库

2.2特点

对象与数据库中的表什么关系? 一一映射
对象中的属性与数据库中的字段什么关系? 一一映射
以面向对象的方式操作数据库。由框架动态生成Sql语句。实现了跨数据库的操作。

标签:1.4,queryWrapper,MybatisPlus,1.3,查询,ORM,new,QueryWrapper,III
来源: https://blog.csdn.net/weixin_52489114/article/details/123046931

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有