写在前面

MyBatis的增强方案确实有不少,甚至有种感觉是现在如果只用 “裸MyBatis”,不来点增强插件都不好意思了。这不,在上一篇文章《Spring Boot项目利用MyBatis Generator进行数据层代码自动生成》 中尝试了一下 MyBatis Generator。这次来点更加先进的 Mybatis-Plus,SQL语句都不用写了,分页也是自动完成,嗯,真香!


数据库准备

CREATE TABLE tbl_user
(user_id BIGINT(20) NOT NULL COMMENT '主键ID',user_name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',user_age INT(11) NULL DEFAULT NULL COMMENT '年龄',PRIMARY KEY (user_id)
) charset = utf8;

MyBatis-Plus加持

  • 工程搭建 (不赘述了)
  • 依赖引入
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0</version>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version>
</dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.12</version>
</dependency>

主要是 Mybatis Plus、Lombok(不知道Lombok干嘛的?可以看这里)、Druid连接池 等依赖。

  • MyBatis Plus配置

项目配置

mybatis-plus:mapper-locations: classpath:/mapper/*Mapper.xml

新增 MyBatis Plus配置类

@Configuration
@MapperScan("cn.codesheep.springbtmybatisplus.mapper")
public class MyBatisConfig {}

看到没,几乎零配置啊,下面就可以写业务逻辑了


业务编写

  • 实体类
@Data
@TableName("tbl_user")
public class User {@TableId(value = "user_id")private Long userId;private String userName;private Integer userAge;
}
  • Mapper类
public interface UserMapper extends BaseMapper<User> {}

这里啥接口方法也不用写,就可以实现增删改查了!

  • Service类

Service接口:

public interface UserService extends IService<User> {int insertUser( User user );int updateUser( User user );int deleteUser( User user );User findUserByName( String userName );IPage getUserPage( Page page, User user );
}

Service实现:

@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 增@Overridepublic int insertUser(User user) {return baseMapper.insert( user );}// 改@Overridepublic int updateUser(User user) {return baseMapper.updateById( user );}// 删@Overridepublic int deleteUser(User user) {return baseMapper.deleteById( user.getUserId() );}// 查@Overridepublic User findUserByName( String userName ) {return baseMapper.getUserByName( userName );}
}
  • Controller类
@RestController
@RequestMapping("/user")
public class UserContorller {@Autowiredprivate UserService userService;// 增@PostMapping( value = "/insert")public Object insert( @RequestBody User user ) {return userService.insertUser( user );}// 改@PostMapping( value = "/update")public Object update( @RequestBody User user ) {return userService.updateUser( user );}// 删@PostMapping( value = "/delete")public Object delete( @RequestBody User user ) {return userService.deleteUser( user );}// 查@GetMapping( value = "/getUserByName")public Object getUserByName( @RequestParam String userName ) {return userService.findUserByName( userName );}
}

通过以上几个简单的步骤,我们就实现了 tbl_user表的增删改查,传统 MyBatis的 XML文件一个都不需要写!


实际实验【《乡爱》加持】

  • 启动项目

很牛批的 logo就会出现

Mybatis Plus Logo

接下来通过 Postman来发送增删改查的请求

  • 插入记录

通过 Postman随便插入几条记录 POST localhost:8089/user/insert

{"userId":3,"userName":"刘能","userAge":"58"}
{"userId":4,"userName":"赵四","userAge":"58"}
{"userId":5,"userName":"谢广坤","userAge":"58"}
{"userId":6,"userName":"刘大脑袋","userAge":"58"}

发送插入请求

插入结果

  • 修改记录

修改记录时需要带用户ID,比如我们修改 赵四 那条记录的名字为 赵四(Zhao Four)

发送修改请求

修改结果

  • 删除记录

修改记录时同样需要带用户ID,比如删除ID=6 那条 刘大脑袋的记录

image.png

  • 查询记录(普通查询,下文讲分页查询)

比如,按照名字来查询:GET localhost:8089/user/getUserByName?userName=刘能


最关心的分页问题

  • 首先装配分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();
}
  • Mapper类
public interface UserMapper extends BaseMapper<User> {// 普通查询User getUserByName( String userName );// 分页查询IPage<List<User>> getUsersPage( Page page, @Param("query") User user );
}
  • Service类
@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 查:普通查@Overridepublic User findUserByName( String userName ) {return baseMapper.getUserByName( userName );}// 分页查@Overridepublic IPage getUserPage(Page page, User user) {return baseMapper.getUsersPage( page, user );}
}
  • Controller类
@GetMapping( value = "/page")
public Object getUserPage( Page page, User user ) {return userService.getUserPage( page, user );
}

实际实验一下,我们分页查询 年龄 = 58 的多条记录:

分页查询结果

可以看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,很是优雅呢 !


写在最后

由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!

本文转载自https://www.codesheep.cn/2019/04/12/springbt-mybatis-plus/
如有侵权,请联系作者删除

Spring Boot整合Mybatis-Plus 增删改查+ 分页基本使用完整示例相关推荐

  1. Spring boot 整合 Mybatis 实现增删改查(MyEclipse版)

    1.首先搭建好一个Spring boot 程序,编写好启动类. 启动类代码如下: @SpringBootApplication public class Start {public static vo ...

  2. 3. mysql的注解驱动的三种方式_上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。...

    1.引入依赖 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot- ...

  3. Spring Boot整合MongoDB实现增删改查

    MongoDB这两年来是本人一直使用较多的,之前的使用大多通过封装的工具类对数据库进行操作,虽然也算稳定,但有了Spring Boot之前的工具类直接加到SpringBoot里就没那么好使了,因此查阅 ...

  4. servlet增删改查实例_SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离不开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4 ...

  5. Spring Boot 中使用 MongoDB 增删改查

    本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...

  6. 基于 spring boot 实现用户的增删改查

    基于登录实现后 在此我们更深一步地实现用户的增删改查(用户登录的实现在我的另一篇文章中) 其实从整体上来说,用户的增删改查和用户登录大同小异 主要是处理好各个层之间的关系 这里源码奉上 实体类 bea ...

  7. springboot整合mybatis实现增删改查

    立志存高远,笃行践初心 三更灯火五更鸡,正是男儿读书时. 黑发不知勤学早,白首方悔读书迟. 立志,标定人生方向:奋斗,创造人生价值,二者相辅相成,互相促进. 大部分程序员的「 目标 」都是成为一名优秀 ...

  8. Mybatis的增删改查(查询)完整代码

    查询 单表 controller /****张子辉 患者列表重做(已测试)*/@PostMapping("/queryAllPatient")@ApiOperation(value ...

  9. Spring+SpringMVC+Mybatis实现增删改查--(五)SSM修改员工页面搭建

    Spring+SpringMVC+Mybatis实现增删改查--(五)SSM修改员工页面搭建 修改员工: 1.在index.jsp页面点击"编辑"弹出编辑对话框 2.去数据库查询部 ...

最新文章

  1. 阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)...
  2. System Memory Management in Windows CE .NET
  3. 上下文保存 中断_Linux性能优化(CPU篇)(5)——CPU的上下文切换有几种类型?什么是进程上下文切换?...
  4. 工业界求解NER问题的12条黄金法则
  5. golang商城_Golang——简单是终极的成熟
  6. 优秀的gdb图形化前端调试器
  7. Office 365 Pro Plus 离线安装包及自定义部署工具下载地址
  8. 我究竟为什么要每天埋头写代码?
  9. sun认证 java怎么考_Sun认证Java开发员考试介绍
  10. 帆软自定义登录html,自定义登陆界面- FineReport帮助文档|报表开发|报表使用|学习教程...
  11. ASP.Net Core数据加密
  12. python实现LZW算法
  13. (微信小程序)页面导航
  14. 微信小程序第三方平台开发流程以及改善
  15. iOS——MVC设计模式
  16. SPSS进行数据分析的一般步骤
  17. Word中论文参考文献英文字符间距太大,调整方法。
  18. 计算机网络-数据传输
  19. kafka 主动消费_Kafka ack消费确认-提交和偏移量 详解
  20. 4. 从0开始学ARM-ARM指令,移位、数据处理、BL、机器码

热门文章

  1. 【心路历程】你是这样的“夜间工程师”吗?
  2. 【NLP】Word2Vec详解(含数学推导)
  3. 一文读懂图卷积GCN
  4. AQS 源码流程分析
  5. 聊聊前端日志库在 SaaS 产品中的应用与设计
  6. 网易云信携手海信S7,新社交开拓电视领域新未来
  7. 根据多个条件删除mysql数据
  8. 小白入门angular-cli的第一次旅程(学习目标 1.路由的基础知识 参数订阅写法)
  9. Android Studio 的 build 过程
  10. 【数据结构】ArrayList原理及实现学习总结