MyBatis-Plus是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,使用MyBatis-Plus时,不会影响原来Mybatis方式的使用。

SpringBoot+MyBatis-Plus环境搭建

SQL脚本:

CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`real_name` varchar(20) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO tb_user (real_name,email,phone) VALUES ('小花','cf1@qq.com','18711111111');
INSERT INTO tb_user (real_name,email,phone) VALUES ('小菊','cf2@qq.com','18322222222');
INSERT INTO tb_user (real_name,email,phone) VALUES ('小熊','cf3@qq.com','18133333333');
INSERT INTO tb_user (real_name,email,phone) VALUES ('小虎','cf4@qq.com','18344444444');
INSERT INTO tb_user (real_name,email,phone) VALUES ('小猪','cf5@qq.com','18723232323');

添加依赖如下(不需要额外添加Mybatis的依赖):

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>

application.yml:

spring:
datasource:
url: jdbc:mysql://localhost/plusdb?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver #在控制台打印SQL语句,com.cf.mpdm.mapper为存放mapper接口的包名
logging:
level:
com.cf.mpdm.mapper: debug

主程序类:

package com.cf.mpdm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; //指定扫描mapper接口的包路径
@MapperScan("com.cf.mpdm.mapper")
@SpringBootApplication
public class MpdmApplication { public static void main(String[] args) {
SpringApplication.run(MpdmApplication.class, args);
} }

UserMapper接口:

package com.cf.mpdm.mapper;

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

UserMapper接口需要继承BaseMapper接口,并且指定泛型为表对应的实体类。

实体类User:

package com.cf.mpdm.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; //表名tb_user带tb_前缀,和实体类类名User不匹配,所以需要使用@TableName指定表名
@TableName("tb_user")
public class User { //指定主键生成策略为自动增长
@TableId(type = IdType.AUTO)
private Integer id; private String realName; private String email; private String phone; //get/set ...
}

MyBatis-Plus默认使用下划线命名到驼峰命名的映射规则来处理表和实体类类名以及表的列名和实体类字段的映射。当默认规则不适用时,则需要通过额外的配置来处理映射,如可以使用注解@TableName来指定表名,使用@TableId和@TableField来指定主键列和非主键列的列名。

@TableId还可以指定主键的生成策略,默认生成策略为NONE,表示无状态,未设置主键类型。其他策略详见IdType

当多数表具有相同的前缀或者相同的主键生成策略时,可以使用全局配置指定表前缀和主键策略,而无需一个个手动添加注解,当然少数特殊的还是可以通过注解的方式来指定,application.yml:

mybatis-plus:
global-config:
db-config:
# 指定主键生成策略为自动增长
idType: AUTO
# 指定表前缀
tablePrefix: tb_

基本的CRUD操作

package com.cf.mpdm;

import com.cf.mpdm.entity.User;
import com.cf.mpdm.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.HashMap;
import java.util.List;
import java.util.Map; @SpringBootTest
class MpdmApplicationTests {
@Autowired
private UserMapper userMapper; @Test
public void testInsert(){
//INSERT INTO tb_user ( real_name, email, phone ) VALUES ( ?, ?, ? )
User user = new User();
user.setRealName("小兰");
user.setEmail("xiaolan@qq.com");
user.setPhone("18700000000");
userMapper.insert(user); //插入成功时,默认会将主键的值回写到实体类中去
System.out.println(user.getId());
} @Test
public void testDelete(){
//根据主键ID删除记录
//DELETE FROM tb_user WHERE id=?
userMapper.deleteById(6); //根据id列表批量删除记录
//DELETE FROM tb_user WHERE id IN ( ? , ? )
/*List<Integer> idList = new ArrayList<>();
idList.add(12);
idList.add(13);
userMapper.deleteBatchIds(idList);*/ //根据条件来删除记录,如根据real_name来删除记录,columnMap的Key必须为表中的字段名,而不是实体类中的字段名。
//DELETE FROM tb_user WHERE real_name = ?
/*Map<String, Object> columnMap = new HashMap<>();
columnMap.put("real_name", "小花");
userMapper.deleteByMap(columnMap);*/
} @Test
public void testUpdate(){
//根据主键id更新记录
//UPDATE tb_user SET real_name=? WHERE id=?
User user = new User();
user.setId(2);
user.setRealName("欧皓辰");
userMapper.updateById(user);
} @Test
public void testSelect(){
//根据主键id查询记录
//SELECT id,real_name,email,phone FROM tb_user WHERE id=?
/*User user = userMapper.selectById(3);
System.out.println(user.getRealName());*/ //根据id列表查询对应记录
//SELECT id,real_name,email,phone FROM tb_user WHERE id IN ( ? , ? )
/*List<Integer> idList = new ArrayList<>();
idList.add(3);
idList.add(4);
List<User> userList = userMapper.selectBatchIds(idList);
System.out.println(userList.size());*/ //根据条件来查询对应记录
//SELECT id,real_name,email,phone FROM tb_user WHERE real_name = ?
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("real_name", "小兰");
List<User> userList = userMapper.selectByMap(columnMap);
System.out.println(userList.size());
}
}

关于使用mapper.xml的一些配置

mybatis-plus:
#指定Mapper所对应的XML文件位置
mapperLocations: classpath:mapper/*.xml
#指定别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名
typeAliasesPackage: com.cf.mpdm.entity

MyBatis-Plus学习笔记(1):环境搭建以及基本的CRUD操作的更多相关文章

  1. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  2. Mybatis学习笔记之---环境搭建与入门

    Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...

  3. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  4. Django学习笔记 开发环境搭建

    为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...

  5. cocos2d-x lua 学习笔记(1) -- 环境搭建

    Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...

  6. go 学习笔记之环境搭建

    千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意 ...

  7. SpringData JPA的学习笔记之环境搭建

    一.环境搭建 1.加入jar包   spring jar+jpa jar +springData jar >>SpringData jar包     2.配置applicationCont ...

  8. 前端框架vue学习笔记:环境搭建

    兼容性 不兼容IE8以下 Vue Devtools 能够更好的对界面进行审查和调试 环境搭建 1.nodejs(新版本的集成了npm)[npm是node包管理 node package manager ...

  9. Web安全测试学习笔记 - vulhub环境搭建

    Vulhub和DVWA一样,也是开源漏洞靶场,地址:https://github.com/vulhub/vulhub 环境搭建过程如下: 1. 下载和安装Ubuntu 16.04镜像,镜像地址:htt ...

随机推荐

  1. Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾,wc -c统计字符串长度

    Linux统计文件数量 ls -l | grep "^-" | wc -l “^-”  一般文件 “^d” 目录文件 shell/vim中^表示开头 cat repatterns ...

  2. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  3. 第二阶段:4.商业需求文档MRD:4.PRD-用例和规则

    类似之前的泳道图 可以在下面添加一些描述 有时候用图还是会有一些限制 不能够很好的表达

  4. 一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

    前言 有时候我们需要在应用启动时执行一些代码片段,这些片段可能是仅仅是为了记录 log,也可能是在启动时检查与安装证书 ,诸如上述业务要求我们可能会经常碰到 Spring Boot 提供了至少 5 种 ...

  5. Centos 7.5安装 Redis 5.0.0

    1 我的环境  1.1 linux(腾讯云) CentOS Linux release 7.5.1804 (Core)  1.2 Redis Redis 5.0.0 2 下载 官网 官网下载地址 3 ...

  6. vmware安装ubuntu的简单配置

    介绍:ubuntu是一个桌面体验比较好的linux操作系统,尝试使用vmware安装一个虚拟机试用一下,做个简单记录,安装操作系统步骤省略 一.配置root用户,并使用root登录图像界面 Ubunt ...

  7. JAVA8之 Stream 流(四)

    如果说前面几章是函数式编程的方法论,那么 Stream 流就应该是 JAVA8 为我们提供的最佳实践. Stream 流的定义 Stream 是支持串行和并行操作的一系列元素.流操作会被组合到流管道中 ...

  8. layui treeSelect

    官方地址:https://fly.layui.com/extend/treeSelect/ 下面介绍一下这个插件的使用方法 1.html页面 <div class="layui-inp ...

  9. Excel解除'工作表保护密码',并复原密码设定

    前提要求 Office 2003(也就是老版的.xls文件) 用到宏操作 可以解除[审阅->保护工作表]的密码保护,其他的密码保护不能处理. 解决方案 打开需解除保护密码的Excel文件(.xl ...

  10. 洛谷$P1864\ [NOI2009]$二叉查找树 区间$dp$

    正解:区间$dp$ 解题报告: 传送门$QwQ$ 首先根据二叉查找树的定义可知,数据确定了,这棵树的中序遍历就已经改变了,唯一能改变的就是通过改变权值从而改变结点的深度. 发现这里权值的值没有意义,所 ...