Java--SpringBoot-44-Mybatis-12-MybatisPlus使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mybatis Plus(简称 MP)是一个Mybatis(opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

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

image.png

       今天看下在SpringBoot中简单的使用MybatisPlus。

一、引入pom依赖

<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="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.3.12.RELEASE</version><relativePath/></parent><groupId>com.xing</groupId><artifactId>springBootMybatisPlus</artifactId><version>0.0.1-SNAPSHOT</version><name>springBootMybatisPlus</name><description>MybatisPlusDemoprojectforSpringBoot</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-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</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.4.3.4</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>

二、直接使用上篇MybatisGenerator自动生成的目录结构

image.png

       当然也可以自己建立,上图中,我们并没有在mapper、service等文件中编写其他的东西,注意不一样的地方:

1.mapper继承了com.baomidou.mybatisplus.core.mapper.BaseMapper2.service继承了com.baomidou.mybatisplus.extension.service.IService3.UserServiceImpl继承了com.baomidou.mybatisplus.extension.service.impl.ServiceImpl

       Java中,子类可以继承父类的所有,那么我们就可以直接使用父类中m默认提供的API,不用去逐个编写了。

三、注入到controller中使用

packagecom.xing.springBootMybatisPlus.controller;
importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
importcom.xing.springBootMybatisPlus.model.User;
importcom.xing.springBootMybatisPlus.service.IUserService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.stereotype.Controller;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
/*** 前端控制器* @author x* @since 2021-11-19*/@Controller@RequestMapping("/user")
publicclassUserController {
finalIUserServiceiUserService;
@AutowiredpublicUserController(IUserServiceiUserService) {
this.iUserService=iUserService;
    }
/*** test* @return ok*/@RequestMapping("/test")
publicStringtest(){
Useruser=newUser();
user.setId(22);
user.setUserName("test");
user.setRealName("测试");
// 新增iUserService.save(user);
Userresult1=iUserService.getOne(newQueryWrapper<User>().lambda().eq(User::getId,user.getId()));
System.out.println("新增后数据:"+result1);
// 修改user.setPassWord("密码");
iUserService.updateById(user);
Userresult2=iUserService.getById(user.getId());
System.out.println("修改后数据:"+result2);
// 获取全部数据List<User>result3=iUserService.list();
System.out.println("获取全部数据:"+result3);
// 删除数据iUserService.removeById(user.getId());
// 获取全部数据List<Map<String, Object>>result4=iUserService.listMaps();
System.out.println("再次获取全部map数据:"+result4);
// 再次新增iUserService.saveOrUpdate(user);
// 获取全部数据List<Integer>list=newArrayList<>();
list.add(user.getId());
List<User>result5=iUserService.listByIds(list);
System.out.println("再次获取全部map数据:"+result5);
// 再次删除iUserService.removeById(user);
// 新增多个Useruser2=newUser();
user2.setId(23);
user2.setUserName("test2");
user2.setRealName("测试2");
List<User>userList=newArrayList<>();
userList.add(user);
userList.add(user2);
iUserService.saveBatch(userList);
//QueryWrapper<User>userQueryWrapper=newQueryWrapper<>();
userQueryWrapper.eq(true, "user_name", user2.getUserName());
List<User>result6=iUserService.list(userQueryWrapper);
System.out.println("再次获取全部数据:"+result6);
return"ok";
    }
}

四、测试结果

image.png


还有一些配置:

server.port=8080spring.datasource.username=rootspring.datasource.password=rootspring.datasource.url=jdbc:mysql://localhost:3306/xinghua?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTCspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverlogging.level.com.xing.springBootMybatisPlus=debugmybatis-plus.check-config-location=truemybatis-plus.configuration.cache-enabled=falsemybatis-plus.configuration.map-underscore-to-camel-case=truemybatis-plus.configuration.auto-mapping-behavior=fullmybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xmlmybatis-plus.global-config.db-config.logic-not-delete-value=1mybatis-plus.global-config.db-config.logic-delete-value=0


总结:

       MybatisPlus就是默认给我们提供了一些API,看上图特性中,还提供和了很多分页、主键生成等功能,可用的时候可以去官网查看例子。


点击原文或者直接去官网:

https://mp.baomidou.com/guide/


END

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
JavaScript
若依框架-------弹层表格
若依框架-------弹层表格
857 0
若依框架----登录界面美化
若依框架----登录界面美化
1450 0
|
4月前
|
存储 机器学习/深度学习 安全
阿里云服务器4核8G价格参考:最新收费标准、可选实例规格与活动价格参考
阿里云服务器4核8G配置目前有计算型 c6、AMD 计算型 c6a、计算平衡增强型 c6e等多种实例规格可选,目前在阿里云的活动中4核8G配置的云服务器经济型e、通用算力型u1、计算型c8i、计算型c9i和计算型c8y实例可选,选择不同实例规格和带宽价格不一样,本文为大家介绍阿里云服务器4核8G配置的最新月付及年付活动价格,以及选择参考。
|
JavaScript
成功解决:如何通过this.$router.push(“/Login“)的方式传参,在另外一个页面接收数据的问题
这篇文章介绍了如何在Vue框架中通过路由跳转传递参数,并在另一个页面接收这些参数。具体方法是使用`this.$router.push`方法的`params`属性传递对象,然后在目标页面通过`this.$route.params`接收传递的参数。
成功解决:如何通过this.$router.push(“/Login“)的方式传参,在另外一个页面接收数据的问题
|
存储 SQL Java
MyBatis batchInsert 批量插入数据
MyBatis batchInsert 批量插入数据
792 0
|
JavaScript
vue导出excel无法打开问题
vue导出excel无法打开问题
|
存储 数据库 Android开发
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
586 0
|
消息中间件 测试技术 领域建模
DDD - 一文读懂DDD领域驱动设计
DDD - 一文读懂DDD领域驱动设计
44107 6
|
前端开发
el-tree菜单权限配置--是否要联动的问题
el-tree菜单权限配置--是否要联动的问题
324 1
|
存储 SQL 数据库
安卓移动应用开发(安卓系统开发教程)
安卓移动应用开发(安卓系统开发教程)