zoukankan      html  css  js  c++  java
  • SpringBoot整合MyBatis-Plus快速开始

    源码下载
    原文链接

    一、MyBatis-Plus介绍

    Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,plus只做增强不做改变,引入它不会对现有mybatis工程产生任何影响,并且只需简单配置,即可快速进行 CURD 操作,从而节省大量时间.代码自动生成,分页,从代码结构上更简洁、开发效率更高了

    二、开始创建quick-mybatis-plus工程,pom依赖如下

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>quick-mybatis-plus</artifactId>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.11</version>
            </dependency>
    
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.2.0</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.4</version>
            </dependency>
    
        </dependencies>
    </project>
    

    application.yml配置如下

    # 配置端口
    server:
      port: 8088
    spring:
      # 配置数据源
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
        username: root
        password: root
        type: com.alibaba.druid.pool.DruidDataSource
    # mybatis-plus相关配置
    mybatis-plus:
      # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
      mapper-locations: classpath:mapper/*.xml
      # 以下配置均有默认值,可以不设置
      global-config:
        db-config:
          #主键类型  auto:"数据库ID自增" 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
          id-type: auto
          #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
          field-strategy: NOT_EMPTY
          #数据库类型
          db-type: MYSQL
      configuration:
        # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
        map-underscore-to-camel-case: true
        # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
        call-setters-on-nulls: true
        # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

    表结构

    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(64) DEFAULT NULL COMMENT '姓名',
      `email` varchar(64) DEFAULT NULL COMMENT '邮箱',
      PRIMARY KEY (`id`),
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
    

    数据准备

    insert into `test`.`user` ( `id`, `name`, `email`) values ( '1', 'bx1', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '2', 'zhangsan', 'zan@qq.com');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '3', 'xxxx', 'aaaaa');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '5', '小白菜', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '6', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '7', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '8', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '9', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '10', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '11', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '12', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '13', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '14', 'hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '15', '嗷嗷hello', 'xxxzcxz');
    insert into `test`.`user` ( `id`, `name`, `email`) values ( '16', '小萝卜', '生生世世');
    

    三、代码编写

    3.1、启动类代码

    package com.lxd.mybatisplus;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
    * @author liuxiaoding
    * @Date 2019/11/19
    **/
    @SpringBootApplication
    @MapperScan(basePackages = {"com.lxd.mybatisplus.mapper"})
    public class Application {
       public static void main(String[] args) {
           SpringApplication.run(Application.class,args);
       }
    }
    
    

    3.2、编写实体类和mapper
    User.java

    package com.lxd.mybatisplus.entity;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    /**
    * @author liuxiaoding
    * @Date 2019/11/19
    **/
    @Data
    @TableName("user")//@TableName中的值对应着表名称
    public class User {
       /**
        * 主键
        * @TableId中可以决定主键的类型,不写会采取默认值,默认值可以在yml中配置
        * AUTO: 数据库ID自增
        * INPUT: 用户输入ID
        * ID_WORKER: 全局唯一ID,Long类型的主键
        * ID_WORKER_STR: 字符串全局唯一ID
        * UUID: 全局唯一ID,UUID类型的主键
        * NONE: 该类型为未设置主键类型
        */
    
       @TableId(type = IdType.AUTO)
       private Integer id;
    
       /**
        * 姓名
        */
       private String name;
    
       /**
        * 邮箱
        */
       private String email;
    }
    
    

    User.mapper

    package com.lxd.mybatisplus.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.lxd.mybatisplus.entity.User;
    
    /**
    * @author liuxiaoding
    * @Date 2019/11/19
    **/
    public interface UserMapper extends BaseMapper<User> {
    }
    
    

    UserService.java

      package com.lxd.mybatisplus.service;
    
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.lxd.mybatisplus.entity.User;
    
    /**
    * @author liuxiaoding
    * @Date 2019/11/19
    **/
    public interface UserService extends IService<User> {
    
    }
    
      ```
      
    实现类  UserServiceImpl.java
    

    package com.lxd.mybatisplus.service;

    import com.baomidou.mybatisplus.extension.service.IService;
    import com.lxd.mybatisplus.entity.User;

    /**

    • @author liuxiaoding
    • @Date 2019/11/19
      **/
      public interface UserService extends IService {

    }

    
    3.3、编写mybatis配置类
    

    package com.lxd.mybatisplus.config;

    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    /**

    • MybatisPlus配置类

    • @author liuxiaoding

    • @Date 2019/11/19
      /
      @Configuration
      public class MybatisPlusConfig {
      /

      • 注意在3.2版本,mp的sql性能分析插件PerformanceInterceptor已经被删除了,我们可以选择其他工具来实现
        */

      /**

      • 分页插件
        */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
        }

    }

      
    # 四、mybatis-plush基础curd功能演示
    在上面的示例代码中我们可以看到,service和mapper中我们没有写任何方法,MyBatis-Plus官方封装了许多基本CRUD的方法,可以直接使用来大量节约时间,MP共通方法详见IService,ServiceImpl,BaseMapper源码,写入操作在ServiceImpl中已有事务绑定,这里我们举一些常用的方法演示.如下
    UserInfoController
    

    package com.lxd.mybatisplus.controller;

    import com.lxd.mybatisplus.entity.User;
    import com.lxd.mybatisplus.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    import java.util.List;

    /**

    • @author liuxiaoding

    • @Date 2019/11/19
      **/
      @RestController
      @RequestMapping(value = "user")
      public class UserController {
      @Autowired
      private UserService userService;

      /**

      • 批量获取用户
      • @return
        */
        @RequestMapping("/getList")
        public List getList(){
        List userInfoEntityList = userService.list();
        return userInfoEntityList;
        }

      /**

      • 根据id获取用户信息
      • @param userId
      • @return
        */
        @RequestMapping("/getUser")
        public User getUser(Integer userId){
        return userService.getById(userId);
        }

      /**

      • 添加用户返回主键
      • @param user
      • @return
        */
        @RequestMapping("/addUser")
        public String addUser(User user){
        userService.save(user);
        return "主键id:"+user.getId();
        }

      /**

      • 删除
      • @param userId
      • @return
        */
        @RequestMapping("/delete")
        public boolean delete(Integer userId){
        return userService.removeById(userId);
        }

      /**

      • 根据id更新
      • @param user
      • @return
        */
        @RequestMapping(value = "update")
        public boolean update(User user){
        return userService.updateById(user);
        }
        }
  • 相关阅读:
    Oracle 各种查询语句
    Win7下Eclipse中文字体太小
    ASP.NET MVC(Razor)上运用UEditor和xhEditor编辑器检测到有潜在危险的 Request.Form的真正解决办法
    Oracle 分页
    限制IIS访问流量提升IIS性能
    pl\sql工具导出表结构、序列和触发器方法
    JS 中面向对象的5种写法
    去除Windows 2003的登录CTRL+ALT+DEL
    List绑定时无法进行增删查改的解决办法
    .net工具
  • 原文地址:https://www.cnblogs.com/waphnb/p/11890119.html
Copyright © 2011-2022 走看看