Mybatis-Plus | 第一章 简介及快速入门
2019-08-29 00:15
295 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45561700/article/details/100129149
Mybatis-Plus简介及快速入门
1 技术储备
需要熟悉一下知识:
- Java基础(熟悉Lambda表达式)
- SpringBoot
- maven
- mybatis
- mysql
2 Mybatis VS JPA
2.1 Mybatis优势
- sql语句可以自由控制,更灵活,性能较JPA略高
- Sql与代码分离,易于阅读和维护
- 提供XML标签,支持编写动态Sql语句
2.2 Mybatis劣势
- 简单的CRUD操作还得写Sql语句
- xml中有大量的Sql要维护
- Mybatis自身功能很有限(物理分页都没有),但支持Plugin
2.3 JPA优势
- JPA移植性比较好
- 提供了很多CRUD方法、开发效率高
- 对象化程度更高
3 MP特性介绍
- 无侵入(对mybatis只做增强不做改变,引入MP不会对现有功能产生影响),损耗小(启动时就会注入,性能基本无损耗,直接面型对象操作),强大的CRUD操作(内置了通用Mapper、内置Service,通过少量操作就可以实现单表的大部分操作)
- 支持Lambda形式调用、支持多种数据库(mysql、Oracle、Sql Server、postgre等)
- 支持主键自动生成(提供了多种主键生成,可以自由配置)、支持ActiveRecord模式(AR模式,实体类集成Model,通过实体类进行CRUD操作)
- 支持自定义全局通用操作、支持关键词自动转义
- 内置代码生成器(不仅生成实体类和
*Mapper.xml
,还可以生成service和controller)、内置分页插件、内置性能分析插件(输出sql语句等) - 内置全局拦截插件、内置Sql注入剥离器
4 快速入门
Lombok简化代码。
分五步:
4.1 建库建表
/* Navicat Premium Data Transfer Source Server : local Source Server Type : MySQL Source Server Version : 50727 Source Host : localhost:3306 Source Schema : db_mp Target Server Type : MySQL Target Server Version : 50727 File Encoding : 65001 Date: 28/08/2019 23:46:02 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `gmt_create` datetime(0) NULL DEFAULT NULL, `gmt_modified` datetime(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES (1, '张三丰', '123456', '2019-08-28 23:23:51', '2019-08-28 23:23:56'); INSERT INTO `t_user` VALUES (2, '王二小', '123', '2019-08-28 23:24:12', '2019-08-28 23:24:15'); INSERT INTO `t_user` VALUES (3, '李元芳', '456', '2019-08-28 23:24:40', '2019-08-28 23:24:44'); SET FOREIGN_KEY_CHECKS = 1;
4.2 新建SpringBoot工程,引入依赖
<?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.1.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.kjgym</groupId> <artifactId>mybatis-plus-learn</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis-plus-learn</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
4.3 配置数据源
主要是在application.yml文件中配置数据源:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db_mp?useSSL=false&serverTimezone=GMT%2B8 # %2B 代表加号,是url里的code码 username: root password: 123456
4.4 编码
-
首先是实体类
User.java
:package com.kjgym.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; /** * 实体类 * @author * @date 2019/8/28 23:25 * @version 1.0 */ @Data @TableName("t_user") public class User { @TableId(type = IdType.AUTO) private long id; private String name; private String password; private Date gmtCreate; private Date gmtModified; }
-
mapper接口
UserMapper.java
:package com.kjgym.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.kjgym.domain.User; import org.apache.ibatis.annotations.Mapper; /** * @author * @version 1.0 * @date 2019/8/28 23:30 */ @Mapper public interface UserMapper extends BaseMapper<User> { }
-
项目目录结构
[外链图片转存失败(img-YgYs20Ye-1567008869133)(C:\Users\kjgym\AppData\Roaming\Typora\typora-user-images\1567007571731.png)]
4.5 测试
package com.kjgym; import com.kjgym.domain.User; import com.kjgym.mapper.UserMapper; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest public class MybatisPlusLearnApplicationTests { @Autowired private UserMapper userMapper; @Test public void contextLoads() { } @Test public void select() { List<User> userList = userMapper.selectList(null); Assert.assertEquals(3, userList.size()); userList.forEach(System.out::println); } }
4.6测试结果
User(id=1, name=张三丰, password=123456, gmtCreate=Wed Aug 28 23:23:51 CST 2019, gmtModified=Wed Aug 28 23:23:56 CST 2019) User(id=2, name=王二小, password=123, gmtCreate=Wed Aug 28 23:24:12 CST 2019, gmtModified=Wed Aug 28 23:24:15 CST 2019) User(id=3, name=李元芳, password=456, gmtCreate=Wed Aug 28 23:24:40 CST 2019, gmtModified=Wed Aug 28 23:24:44 CST 2019)
相关文章推荐
- MyBatis-Plus 入门 第1章 MyBatis-Plus 简介及快速入门
- 优雅高效的MyBatis-Plus工具快速入门使用
- mybatis-plus快速入门使用
- MyBatis-Plus工具快速入门使用
- Mybatis-plus快速入门
- Mybatis快速入门(一)--入门简介
- MyBatis-Plus快速入门使用
- 转:优雅高效的MyBatis-Plus工具快速入门使用
- MyBatis Plus工具快速入门使用教程
- 优雅高效的MyBatis-Plus工具快速入门使用
- 优雅高效的MyBatis-Plus工具快速入门使用
- MyBatis-Plus工具快速入门
- 优雅高效的MyBatis-Plus工具快速入门使用
- 【MyBatis】第一章:MyBatis的简介和入门使用
- 优雅高效的MyBatis-Plus工具快速入门使用
- MyBatis-Plus快速入门
- mybatis学习笔记,简介及快速入门
- MyBatis-快速入门
- C++ primer笔记——第一章 快速入门
- NodeMCU简介与快速入门