zoukankan      html  css  js  c++  java
  • 【快学springboot】SpringBoot整合Mybatis Plus

    原创声明

    本文首发于头条号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:http://blog.happyjava.cn。欢迎转载,但须保留此段声明。

    mybatis plus简介

    来自官方对于mybatis plus的介绍:MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其支持以下特性:

    • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
    • 损耗小:启动即会自动注入基本 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、SQLServer2005、SQLServer 等多种数据库
    • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
    • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

    mybatis plus,对于mybatis的增强不是一点半点的,这两者结合使用,真的可以大幅的提升开发效率。目前,也有众多互联网公司正在使用mybatis plus。下面,就让我们快速上手mybatis plus吧。

    快速开始

    数据库表(来自官方文档):

    id name age email
    1 Jone 18 test1@baomidou.com
    2 Jack 20 test2@baomidou.com
    3 Tom 28 test3@baomidou.com
    4 Sandy 21 test4@baomidou.com
    5 Billie 24 test5@baomidou.com

    建表语句:

    DROP TABLE IF EXISTS user;
    
    CREATE TABLE user
    (
    	id BIGINT(20) NOT NULL COMMENT '主键ID',
    	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    	age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    	email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    	PRIMARY KEY (id)
    );
    

    数据:

    DELETE FROM user;
    
    INSERT INTO user (id, name, age, email) VALUES
    (1, 'Jone', 18, 'test1@baomidou.com'),
    (2, 'Jack', 20, 'test2@baomidou.com'),
    (3, 'Tom', 28, 'test3@baomidou.com'),
    (4, 'Sandy', 21, 'test4@baomidou.com'),
    (5, 'Billie', 24, 'test5@baomidou.com');
    

    引入依赖

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.1.1</version>
    </dependency>
    

    一个是mysql的依赖,一个是mybatis-plus的依赖

    编写User.java实体类

    @Data
    public class User {
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
    

    UserMapper接口

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    
    }
    

    快速使用

    上面的步骤做完,就可以开始使用mybatis plus了。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MybatisPlusApplicationTests {
    
        @Autowired
        private UserMapper userMapper;
    
        @Test
        public void test1() {
            List<User> users = userMapper.selectList(null);
            users.forEach(e -> {
                System.out.println(e.toString());
            });
        }
    
    }
    

    输出结果:

    通过注解写sql

    通过Select Insert Update Delete 注解,可以写增删查改语句,如下:

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    
        @Select("select * from user where id = #{id}")
        User findUserById(int id);
    
    }
    

    通过xml配置写sql

    通过xml的方式写sql的话,需要先配置xml的位置:

    mybatis-plus.mapper-locations=classpath:mappers/*.xml
    

    示例xml配置如下:userMapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="happy.mybatisplus.mapper.UserMapper">
    
        <select id="findUserByName" parameterType="string"
                resultType="happy.mybatisplus.entity.User">
            SELECT * FROM user WHERE name = #{name}
        </select>
    
    </mapper>
    
    

    这些都属于mybatis的范畴了,这里就不做过多介绍。

    mybatis-plus常用

    下面列出一些mybatis-plus中常用的东西:

    1、指定实体类对应的数据库表名

    @TableName(value = "user")
    
    

    在实体类与数据库表明不是对应的情况下使用,如:

    @Data
    @TableName(value = "user")
    public class UserEntity {
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
    
    

    2、指定字段对应的数据库字段名

    @TableField(value = "age")
    
    

    如:

    @Data
    @TableName(value = "user")
    public class UserEntity {
        private Long id;
        private String name;
    
        @TableField(value = "age")
        private Integer userAge;
        private String email;
    }
    
    

    3、插入数据,得到主键

    调用mybatis plus 提供的insert方法,执行后,会把主键设置到入参的id属性中,如下:

    4、分页

    配置分页插件:

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
    
    

    分页示例:

    总结

    这里演示了springboot快速使用mybatis-plus,mybatis-plus有非常丰富的用法,这里没法一一列举。有兴趣的朋友,可以直接到官方文档里查看。

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/happy4java/p/11206801.html
Copyright © 2011-2022 走看看