目录

一、项目概述

1、项目来源

2、功能简介

3、技术架构

二、Mybatis-Plus概述

1、简介

2、特性

三、Mybatis-Plus入门

1、创建数据库

2、创建 User 表

表结构:

建表SQL语句:

插入数据SQL语句:

3、初始化一个SpringBoot工程

4、在Pom.xml文件中引入SpringBoot和Mybatis-Plus相关依赖

5、第一次使用lombok需要在IDEA中安装lombok插件

6、配置

mysql8这么写:

mysql5这么写:

注意:

7、编写代码

主类:

实体类:

mapper:

8、开始使用

查询所有用户,代码测试:

UserMapper(加注解):

运行结果:

9、配置日志

四、Mybatis-Plus添加操作

1、代码

2、控制台输出

3、数据库


一、项目概述

1、项目来源

来自尚硅谷教程,学习地址尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目_哔哩哔哩_bilibili

2、功能简介

谷粒学院,是一个B2C模式的职业技能在线教育系统,分为前台用户系统和后台运营平台;

3、技术架构

系统开发阶段使用了前后端分离架构,部署阶段使用了容器技术;

二、Mybatis-Plus概述

1、简介

官网:Redirect

参考教程:http://mp.baomidou.com/guide/

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

快速开始参考:http://mp.baomidou.com/guide/quick-start.html

2、特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑;

损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作;

强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分CRUD 操作,更有强大的条件构造器,满足各类使用需求;

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

支持多种数据库:支持MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer等多种数据库;

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题;

支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML启动;

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作;

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere );

支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词;

内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller层代码,支持模板引擎,更有超多自定义配置等您来使用;

内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询;

内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询;

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作;

内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击;

三、Mybatis-Plus入门

1、创建数据库

mybatis_plus

2、创建 User 表

表结构:

建表SQL语句:

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 )
);

插入数据SQL语句:

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' );

3、初始化一个SpringBoot工程

使用 Spring Initializr 快速初始化一个 Spring Boot 工程;

Group:com.zibo;

Artifact:mybatis-plus;

版本:2.4.0(年少轻狂的我选择了最新版本!)

4、在Pom.xml文件中引入SpringBoot和Mybatis-Plus相关依赖

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.zibo</groupId><artifactId>mybatis-plus</artifactId><version>0.0.1-SNAPSHOT</version><name>mybatis-plus</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--自带:spring-boot-starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--自带:spring-boot-starter-test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></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><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题;

5、第一次使用lombok需要在IDEA中安装lombok插件

(恰好我需要更新,就顺便更新一下!)

6、配置

在 application.properties 配置文件中添加 MySQL 数据库的相关配置:

(我用的是mysql8版本)

mysql8这么写:

#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=******(隐藏)

mysql5这么写:

#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus
spring.datasource.username=root
spring.datasource.password=123456

注意:

1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为Spring Boot 2.1 集成了 8.0版本的jdbc驱动,这个版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例报告如下错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or representsmore;

2、这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver 已经被废弃,否则运行测试用例的时候会有 WARN 信息;

7、编写代码

主类:

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication
@MapperScan("com.zibo.mybatisplus.mapper")
public class MybatisPlusApplication {......
}

注意:扫描的包名可根据实际情况修改;

实体类:

创建包 entity 编写实体类 User.java(此处使用了 Lombok 简化代码):

package com.zibo.mybatisplus.entity;import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;private String email;
}

Lombok使用参考:Lombok 介绍_motui的博客-CSDN博客_lombok

mapper:

创建包 mapper 编写Mapper 接口UserMapper:

package com.zibo.mybatisplus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zibo.mybatisplus.entity.User;public interface UserMapper extends BaseMapper<User> {}

8、开始使用

查询所有用户,代码测试:

这里我们使用项目初始化时自动生成的测试类进行测试:

package com.zibo.mybatisplus;import com.zibo.mybatisplus.entity.User;
import com.zibo.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
public class MybatisPlusApplicationTests {//注意://IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。//为了避免报错,可以在 dao 层 的接口上添加 @Repository 注解@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {System.out.println(("----- selectAll method test ------"));//UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper//所以不填写就是无任何条件List<User> users = userMapper.selectList(null);users.forEach(System.out::println);}}

UserMapper(加注解):

package com.zibo.mybatisplus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zibo.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;@Repository
public interface UserMapper extends BaseMapper<User> {}

运行结果:

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

通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

9、配置日志

查看sql输出日志:

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

四、Mybatis-Plus添加操作

(参考官方文档:https://baomidou.com/guide/crud-interface.html#insert)

1、代码

package com.zibo.mybatisplus;import com.zibo.mybatisplus.entity.User;
import com.zibo.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
public class MybatisPlusApplicationTests {//注意://IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。//为了避免报错,可以在 dao 层 的接口上添加 @Repository 注解@Autowiredprivate UserMapper userMapper;//查询操作@Testpublic void contextLoads() {System.out.println(("----- selectAll method test ------"));//UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper//所以不填写就是无任何条件List<User> users = userMapper.selectList(null);users.forEach(System.out::println);}//添加操作@Testpublic void add(){//组织user对象User user = new User();user.setName("zibo");user.setAge(24);user.setEmail("18838186892@163.com");//添加到数据库int insert = userMapper.insert(user);System.out.println("insert:" + insert);//影响的行数System.out.println(user);//id自动回填}}

2、控制台输出

3、数据库

注意:数据库插入id值默认为:全局唯一id;

【谷粒学院】001-项目概述、Mybatis Plus入门相关推荐

  1. 谷粒学院(五)---Maven从入门到入魔

    前言 我们在日常的javaee项目开发中,对于大量模块的开发管理和jar包的管理,我们难免会设计到maven进行项目的管理,这里我总结Maven中比较重要的一些知识点,这也是我在最近学习的项目谷粒学院 ...

  2. 谷粒学院day0day1——项目介绍与mybatis plus入门

    目 录 day0.项目介绍 1 前置知识 2 项目背景 3 项目商业模式 4 项目核心功能模块 5 本项目使用的技术 day1.Mybatis-plus 1 Mybatis-plus简介 2 mysq ...

  3. 尚硅谷项目 谷粒学院

    尚硅谷项目 谷粒学院 文章目录 尚硅谷项目 谷粒学院 Day01 项目介绍和Mybatis-plus 项目介绍: 1 什么是在线教育 1.1 基本概述 1.2 发展潜力 1.3 适用行业 项目采用技术 ...

  4. 谷粒学院-数据库设计、搭建项目环境、Mybatis-Plus代码生成器

    数据库设计规约 以下规约只针对本模块,更全面的文档参考<阿里巴巴Java开发手册>:五.MySQL数据库1.库名与应用名称尽量一致2.表名.字段名必须使用小写字母或数字,禁止出现数字开头, ...

  5. 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)

    问题描述: 在做谷粒学院项目时,需要使用阿里云的短信服务用于注册验证,但是阿里云的短信服务目前不对个人开放了,看到弹幕说可以在云市场购买,于是果断尝试了一把,这过程中又遇到头疼的依赖版本兼容问题,好在 ...

  6. 谷粒学院项目笔记6——oss、EasyExcel、课程分类、nginx

    尚硅谷谷粒学院项目第六天内容之对象存储oss服务.使用EasyExcel添加课程分类功能.课程列表分类.ningx的使用 对象存储oss 打开阿里云官网--对象存储--oss管理控制台 创建bucke ...

  7. 谷粒学院项目对应知识点

    前言: 学习的谷粒学院项目,地址:尚硅谷-全栈在线教育项目-谷粒学院[Spring Boot + Spring Cloud Alibaba + Vue.js]_哔哩哔哩_bilibili 根据所学内容 ...

  8. 谷粒学院项目讲师管理(二)

    谷粒学院项目讲师管理 一.讲师列表 1.添加讲师列表路由 2.创建路由对应的vue页面 3.第三步在api文件夹创建teacher.js定义访问的接口地址 二.分页查询 三.条件查询 四.讲师添加 五 ...

  9. Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院

    谷粒学院 课程详细页面功能完善 一.修改课程详细接口 1.在service_order模块添加接口 用于判断订单中status值是否为1,为1则为已支付 @RestController @CrossO ...

最新文章

  1. java多线程实现归并排序_利用多线程对数组进行归并排序
  2. 绝对和相对误差(absolute relative error)
  3. C#链接数据库增删改查的例子
  4. 148. Leetcode 455. 分发饼干 (贪心算法-基础题目)
  5. 杨辉三角形递归c语言,关于【杨辉三角】的递归解决方法,请教。有没有大神【【高手】】...
  6. SpringMVC中向服务器传输数据(解决get、post、delete、put请求乱码问题)
  7. java 任意数平均值_【编程题】通过键盘输入三个任意的数字,计算三个值的平均值,并输出结果。...
  8. LeetCode66——Plus One(一个整数用数组存储,然后在末尾加1)
  9. hive使用适用场景_Hive 中 Map Join 的适用场景:非等值连接
  10. python小屋_Python小屋——Python语言基础(一)
  11. Linux性能监控与分析之--- CPU
  12. Thinkphp3.2.3的主从分离事务问题(坑!!!)
  13. (三)线程同步工具集_1---控制线程并发访问一个资源
  14. 驴妈妈、途牛们该如何收割亲子游市场的红利?
  15. 数据库系统异常排查之DMV(转)
  16. iOS蓝牙开发(一)蓝牙相关基础知识
  17. 全国多省市实现电子营业执照和电子印章同步发放
  18. Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换
  19. [ERROR] [MY-010457][Server]--initialize specified but....
  20. 代码传奇 | 搞罢餐的热血青年到 PHP大神的蜕变——“鸟哥”惠新宸

热门文章

  1. FRM-92050:连接服务器失败
  2. poll,ppoll
  3. 《那些年啊,那些事——一个程序员的奋斗史》——43
  4. Ubuntu22.04安装gcc-5和g++-5
  5. 头歌-信息安全技术-【实训10】HTML信息隐藏、动态分析技术
  6. 开启 Chrome、Edge 浏览器的多线程下载功能
  7. 人工神经网络与深度神经网络
  8. 为什么双绞线可以屏蔽外部磁场干扰?
  9. 一场美好的婚礼对女孩子来说意味着什么?
  10. SQL审核 | SQLE 二次开发环境搭建