Mybatis-Plus

原文地址:https://mp.weixin.qq.com/s?__biz=MzU4ODI1MjA3NQ==&mid=2247484119&idx=1&sn=96f980fb364c3a1cbdca802ca6477eb3&chksm=fdded413caa95d0534bfa137fac7820075ccb9699fc5dca6400ab06f3d4cc3894f7c3b9aa2ea&mpshare=1&scene=1&srcid=0412xWTPJVyQzn11bacNMVfX&key=ea0a47f5b68e2b15598b54af1a9aacab07dcb7b8ebbdf57feafbbb0e20cb22906504162f85da4a9bd39b6a442d84389e481a61ca5549d360ab801a4f5acf3b12980af008567b1ea9fbb4fd7be21f64ba&ascene=1&uin=MTEwNjU5OTE0MQ%3D%3D&devicetype=Windows+10&version=62060739&lang=zh_CN&pass_ticket=zRamXZU%2F%2BM02qhAL5mm6OvgcGEXIREpywpLurnBpJ1yPmuKRYSAmVS9XvUMQ2i21

 

写在前面

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


数据库准备

 
  1. CREATE TABLE tbl_user

  2. (

  3. user_id BIGINT(20) NOT NULL COMMENT '主键ID',

  4. user_name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',

  5. user_age INT(11) NULL DEFAULT NULL COMMENT '年龄',

  6. PRIMARY KEY (user_id)

  7. ) charset = utf8;


MyBatis-Plus加持

  • 工程搭建 (不赘述了)

  • 依赖引入

 
  1. <dependency>

  2. <groupId>com.baomidou</groupId>

  3. <artifactId>mybatis-plus-boot-starter</artifactId>

  4. <version>3.1.0</version>

  5. </dependency>

  6.  

  7. <dependency>

  8. <groupId>org.projectlombok</groupId>

  9. <artifactId>lombok</artifactId>

  10. </dependency>

  11.  

  12. <dependency>

  13. <groupId>com.alibaba</groupId>

  14. <artifactId>druid-spring-boot-starter</artifactId>

  15. <version>1.1.9</version>

  16. </dependency>

  17.  

  18. <dependency>

  19. <groupId>mysql</groupId>

  20. <artifactId>mysql-connector-java</artifactId>

  21. <scope>runtime</scope>

  22. <version>8.0.12</version>

  23. </dependency>

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

  • MyBatis Plus配置

项目配置

 
  1. mybatis-plus:

  2. mapper-locations: classpath:/mapper/*Mapper.xml

新增 MyBatis Plus配置类

 
  1. @Configuration

  2. @MapperScan("cn.codesheep.springbtmybatisplus.mapper")

  3. public class MyBatisConfig {

  4. }

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


业务编写

  • 实体类

 
  1. @Data

  2. @TableName("tbl_user")

  3. public class User {

  4. @TableId(value = "user_id")

  5. private Long userId;

  6. private String userName;

  7. private Integer userAge;

  8. }

  • Mapper类

 
  1. public interface UserMapper extends BaseMapper<User> {

  2. }

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

  • Service类

Service接口:

 
  1. public interface UserService extends IService<User> {

  2. int insertUser( User user );

  3. int updateUser( User user );

  4. int deleteUser( User user );

  5. User findUserByName( String userName );

  6. IPage getUserPage( Page page, User user );

  7. }

Service实现:

 
  1. @Service

  2. @AllArgsConstructor

  3. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

  4.  

  5. // 增

  6. @Override

  7. public int insertUser(User user) {

  8. return baseMapper.insert( user );

  9. }

  10.  

  11. // 改

  12. @Override

  13. public int updateUser(User user) {

  14. return baseMapper.updateById( user );

  15. }

  16.  

  17. // 删

  18. @Override

  19. public int deleteUser(User user) {

  20. return baseMapper.deleteById( user.getUserId() );

  21. }

  22.  

  23. // 查

  24. @Override

  25. public User findUserByName( String userName ) {

  26. return baseMapper.getUserByName( userName );

  27. }

  28. }

  • Controller类

 
  1. @RestController

  2. @RequestMapping("/user")

  3. public class UserContorller {

  4.  

  5. @Autowired

  6. private UserService userService;

  7.  

  8. // 增

  9. @PostMapping( value = "/insert")

  10. public Object insert( @RequestBody User user ) {

  11. return userService.insertUser( user );

  12. }

  13.  

  14. // 改

  15. @PostMapping( value = "/update")

  16. public Object update( @RequestBody User user ) {

  17. return userService.updateUser( user );

  18. }

  19.  

  20. // 删

  21. @PostMapping( value = "/delete")

  22. public Object delete( @RequestBody User user ) {

  23. return userService.deleteUser( user );

  24. }

  25.  

  26. // 查

  27. @GetMapping( value = "/getUserByName")

  28. public Object getUserByName( @RequestParam String userName ) {

  29. return userService.findUserByName( userName );

  30. }

  31. }

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


实际实验【乡爱加持】

  • 启动项目

很牛批的 logo就会出现

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

  • 插入记录

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

 
  1. {"userId":3,"userName":"刘能","userAge":"58"}

  2. {"userId":4,"userName":"赵四","userAge":"58"}

  3. {"userId":5,"userName":"谢广坤","userAge":"58"}

  4. {"userId":6,"userName":"刘大脑袋","userAge":"58"}

  • 修改记录

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

  • 删除记录

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

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

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


最关心的分页问题

  • 首先装配分页插件

 
  1. @Bean

  2. public PaginationInterceptor paginationInterceptor() {

  3. return new PaginationInterceptor();

  4. }

  • Mapper类

 
  1. public interface UserMapper extends BaseMapper<User> {

  2.  

  3. // 普通查询

  4. User getUserByName( String userName );

  5.  

  6. // 分页查询

  7. IPage<List<User>> getUsersPage( Page page, @Param("query") User user );

  8. }

  • Service类

 
  1. @Service

  2. @AllArgsConstructor

  3. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

  4.  

  5. // 查:普通查

  6. @Override

  7. public User findUserByName( String userName ) {

  8. return baseMapper.getUserByName( userName );

  9. }

  10.  

  11. // 分页查

  12. @Override

  13. public IPage getUserPage(Page page, User user) {

  14. return baseMapper.getUsersPage( page, user );

  15. }

  16. }

  • Controller类

 
  1. @GetMapping( value = "/page")

  2. public Object getUserPage( Page page, User user ) {

  3. return userService.getUserPage( page, user );

  4. }

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值