Springboot mybatis-plus配置及用法详解

本节内容扩展介绍下针对mybatis的增强工具mybatis-plus,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

二话不多说,我们先写编写个简单的例子,让大家先初步的了解下mybatis-plus。

1.mybatis-plus初步实例

(1)创建一个spring boot web工程(具体创建过程就不再演示了,还不会的同学去看看spring boot专题第一节内容)

(2)引入依赖

<!--web项目依赖-->
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <!--validation表单校验-->
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
 </dependency>
 <!--mybatis-plus-->
 <dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.4.0</version>
 </dependency>
 <!--mysql驱动-->
 <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
 </dependency>
 <!--thymeleaf依赖包-->
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>
 <!--lombok-->
 <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
 </dependency>

(3)配置文件application.yml

# DataSource Config
 spring:
  datasource:
   username: root
   password: tx@mysql@2020
   url: jdbc:mysql://188.131.233.55:3306/spring_boot_topic
   driver-class-name: com.mysql.cj.jdbc.Driver(4)

(4)实体类User

package com.kinglead.demo.domain;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 ​
 @Data
 @TableName(value = "t_user") //指明数据库表名
 public class User {
   private Long id;
   private String name;
   private Integer age;
   private String email;
 }

(5)创建Mapper接口

package com.kinglead.demo.mapper;
 ​
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kinglead.demo.domain.User;
 ​
 //未来使用mybatis-plus的公共接口,必须继承BaseMapper
 public interface UserMapper extends BaseMapper<User> {
 }

(6)创建Service接口

UserService

package com.kinglead.demo.service;
 import com.kinglead.demo.domain.User;
 import java.util.List;
 public interface UserService {
   List<User> queryUserList();
 }

UserServiceImpl

package com.kinglead.demo.service.impl;
 ​
 import com.kinglead.demo.domain.User;
 import com.kinglead.demo.mapper.UserMapper;
 import com.kinglead.demo.service.UserService;
 import org.springframework.stereotype.Service;
 ​
 import javax.annotation.Resource;
 import java.util.List;
 ​
 @Service
 public class UserServiceImpl implements UserService {
   @Resource
   private UserMapper userMapper;
   @Override
   public List<User> queryUserList() {
     //使用mybatis-plus公共查询接口完成列表查询
     return userMapper.selectList(null);
   }
 }

(7)创建controller

package com.kinglead.demo.controller;
 ​
 import com.kinglead.demo.domain.User;
 import com.kinglead.demo.service.UserService;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.ModelAndView;
 ​
 import javax.annotation.Resource;
 import java.util.List;
 ​
 @Controller
 @RequestMapping("/user")
 public class UserController {
 ​
   @Resource
   private UserService userService;
 ​
   @RequestMapping("/userList")
   public ModelAndView queryUserList(ModelAndView modelAndView){
     List<User> userList = userService.queryUserList();
     modelAndView.addObject("userList", userList);
     modelAndView.setViewName("userList");
     return modelAndView;
   }
 ​
 }

(8)用户列表页面

<!DOCTYPE html>
 <html xmlns:th="http://www.thymeleaf.org">
   <head>
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
     <title>用户信息</title>
     <!--<link rel="stylesheet" type="text/css" href="/css/common.css" rel="external nofollow" />-->
     <style type="text/css">
       table {
         border: 1px solid black;
         text-align: center;
         border-collapse: collapse;
       }
       table thead th {
         border: 1px solid black;
       }
       table tbody td {
         border: 1px solid black;
       }
     </style>
   </head>
   <body>
     <div>
       <h2>用户列表</h2>
     </div>
     <table cellpadding="0" cellspacing="0">
       <thead>
         <th>序号</th>
         <th>编码</th>
         <th>用户名</th>
       </thead>
       <tbody>
       <tr th:each="entries,stat:${userList}" th:style="' color: rgb(17, 119, 0);">>
         <td th:text="${stat.count}"></td>
         <td th:text="${entries['id']}"></td>
         <td th:text="${entries['name']}"></td>
       </tr>
       </tbody>
     </table>
   </body>
 </html>

(9)启动类

package com.kinglead.demo;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 @SpringBootApplication
 @MapperScan("com.kinglead.demo.mapper")
 public class App {
   public static void main(String[] args) {
     SpringApplication.run(App.class, args);
   }
 }

(10)测试访问

小结

我们能看到mybatis-plus通过对mybatis的加强,能在不写mapper.xml文件的情况下,完成简单的CRUD的操作。看到这里,有的小伙伴可能会想,这和JPA有什么不一样,直接用JPA不就好啦。

下面我们来对比下他们俩的区别:要说mybatis-plus,得先说mybatis。mybatis比较接近原生sql,要想使用的好,需要很好的sql基础,所有的数据库操作都必须写sql语句;JPA是对hibernate的封装,提取了很多CRUD的公共方法,可以在不写sql的情况下完成不复杂的CRUD;mybatis-plus是mybatis的增强工具,天生拥有mybatis的优势,也具备像JPA一样拥有很多CRUD的公共方法,简单的sql直接调用,不要编写语句。

那我们该如何选择他们呢?没有哪个框架是最优的,主要还是要根据实际项目情况而定。如果项目不复杂,涉及不到很多复杂的数据处理,那么建议考虑JPA。如果项目复杂,涉及到很多复杂的数据处理,那么建议考虑mybatis或mybatis-plus,在这基础上,如果想简化mybatis,可以考虑mybatis-plus。

本节内容只是展示了mybatis-plus的冰山一角,它还有拥有很多特色功能,如支持主键字段生成、内置分页插件等。

源码地址:https://github.com/kinglead2012/myblog

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springboot2.3 整合mybatis-plus 高级功能及用法详解

    -学习并使用mybatis-plus的一些高级功能的用法例如: AR模式. 乐观锁 .逻辑删除 .自动填充.数据保护等功能 为了方便演示,咱们还是新建一个全新的项目 引入mp依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> &l

  • Spring boot整合Mybatis-plus过程解析

    Mybatis初期使用比较麻烦,需要很多配置文件.实体类.dao层映射.还有很多其他的配置.初期开发使用generator可以根据表结构自动生产实体类.dao层代码,这样是可以减轻一部分开发量:后期mybatis进行大量的优化,现在可以使用注解版本,自动管理dao层和配置文件. maven 依赖 注意:本文使用的是mysql,数据库依赖就不展示了 <!-- 引入mvbatie -plus starter--> <dependency> <groupId>com.baom

  • springboot集成mybatisplus实例详解

    集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用mapper的xml文件的. 目录 pom.xml文件 <?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-insta

  • springboot2.3 整合mybatis-plus 高级功能

    -学习并使用mybatis-plus的一些高级功能的用法例如: AR模式. 乐观锁 .逻辑删除 .自动填充.数据保护等功能 为了方便演示,咱们还是新建一个全新的项目 引入mp依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> &l

  • SpringBoot中整合MyBatis-Plus的方法示例

    MyBatis 框架相信大家都用过,虽然 MyBatis 可以直接在 xml 中通过 SQL 语句操作数据库,很是灵活.但正其操作都要通过 SQL 语句进行,就必须写大量的 xml 文件,很是麻烦.于是 MyBatis-Plus 应运而生,作为 MyBatis 的增强工具,更是为我们开发效率得到了质的飞跃. 一.简介 1.MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工

  • SpringBoot学习系列之MyBatis Plus整合封装的实例详解

    前言 MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发.提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现了单表的基础get.save(插入/更新).list.page.delete接口,使用Vo去接收.传输数据,实体负责与数据库表映射. 这样做的目的是与我们之前的那套jpa保持编码风格上的一致,当我们的通用接口不能满足要求时,应当先考虑使用MP的Service层CRUD接口,然后是Mapper的接口,

  • springboot整合mybatis-plus 实现分页查询功能

    建一个config类 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); } } 编写controller post /article/search/{page}/{size} @PostMapping("search/{page}/{size}") p

  • Mybatis环境配置及测试详解

    mybatis 3 | 参考文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型.接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 一.mybatis环境配置 1.通过maven的pom.xml文件引入mybatis需要的包 在其<depend

  • WinServer2012 Telnet配置和用法详解

    目录 引言 一.Telent配置过程 二.Telent用法 引言 搭建或配置网络环境时,经常会使用ping命令检查网络是否可达.有些时候Ping命令也不好使,比如因防火墙禁止或访问策略限制等,这时可以使用Telnet测试映射端口或远程连接主机,这个Telnet在Windows上是默认没有安装的. Telnet协议是TCP/IP协议族的其中之一,是Internet远程登录服务的标准协议和主要方式,常用于网页服务器的远程控制,可供使用者在本地主机运行远程主机上的工作. 一.Telent配置过程 1.

  • SpringBoot系列之MongoDB Aggregations用法详解

    目录 1.前言 2.什么是聚合? 3.环境搭建 4.数据initialize 5.例子应用 参考资料 1.前言 在上一章的学习中,我们知道了Spring Data MongoDB的基本用法,但是对于一些聚合操作,还是不熟悉的,所以本博客介绍一些常用的聚合函数 2.什么是聚合? MongoDB 中使用聚合(Aggregations)来分析数据并从中获取有意义的信息.在这个过程,一个阶段的输出作为输入传递到下一个阶段 常用的聚合函数 聚合函数 SQL类比 描述 project SELECT 类似于s

  • Django MEDIA的配置及用法详解

    如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA. 下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法. 第一步 settings.py # media配置 MEDIA_URL = 'media/' # 用于指定url路径 MEDIA_ROOT = os.path.join(BASE_DIR, "媒体库") # 用于指定上传文件的存储路径 第二步 urls.py from django.conf.urls import url from django.cont

  • Python3中configparser模块读写ini文件并解析配置的用法详解

    Python3中configparser模块简介 configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近.Python2.x 中名为 ConfigParser,3.x 已更名小写,并加入了一些新功能. 配置文件的格式如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User =

  • Mybatis Example的高级用法详解

    目录 Mybatis Example的高级用法 一. mapper接口中的函数及方法 二. example实例方法 三. 使用案例 说说Mybatis Example常见用法 一. 说明 二. 排序查询 三. 查询limit, 只返回前50条数据 Mybatis Example的高级用法 近几个项目一直使用的mybatis来对数据库做查询,期间用到了很多高效简洁的查询方法,特此记录和分享. 一. mapper接口中的函数及方法 方法名 功能 int countByExample(UserExam

  • Springboot mybatis-plus配置及用法详解

    本节内容扩展介绍下针对mybatis的增强工具mybatis-plus,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 二话不多说,我们先写编写个简单的例子,让大家先初步的了解下mybatis-plus. 1.mybatis-plus初步实例 (1)创建一个spring boot web工程(具体创建过程就不再演示了,还不会的同学去看看spring boot专题第一节内容) (2)引入依赖 <!--web项目依赖--> <dependency> <g

  • Mybatis Plus QueryWrapper复合用法详解

    目录 QueryWrapper复合用法 使用QueryWrapper小结 mybatisplus自定义分页查询 其中ew.customSqlSegment QueryWrapper 设置参数几种格式 有关queryWrapper使用or条件时 QueryWrapper复合用法 Mybatis Plus作为一个强大的msql插件,简化了DAO许多操作,使得我们的代码看上去更加优雅一些: 这里主要记录一下QueryWrapper的复杂查询用法 LambdaQueryWrapper<T> query

  • MyBatis动态SQL标签的用法详解

    1.MyBatis动态SQL MyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中. 动态 SQL 元素和

  • SpringBoot整合Mybatis与druid实现流程详解

    目录 SpringBoot整合junit SpringBoot整合junit SpringBoot整合junit的classes SpringBoot整合Mybatis 整合前的准备 整合Mybatis SpringBoot 整合druid 配置前置知识小点 整合druid SpringBoot整合junit SpringBoot整合junit ①还是一样,我们首先创建一个SpringBoot模块. 由于我们并不测试前端,而只是整合junit,所以不用选择模板,选择其中的web即可. 完成以后我

随机推荐