文章共 600字,阅读大约需要 3分钟!


写在前面

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加持

  • 工程搭建 (不赘述了)

  • 依赖引入

  1. <dependency>

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

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

  4.    <version>3.1.0</version>

  5. </dependency>


  6. <dependency>

  7.    <groupId>org.projectlombok</groupId>

  8.    <artifactId>lombok</artifactId>

  9. </dependency>


  10. <dependency>

  11.    <groupId>com.alibaba</groupId>

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

  13.    <version>1.1.9</version>

  14. </dependency>


  15. <dependency>

  16.    <groupId>mysql</groupId>

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

  18.    <scope>runtime</scope>

  19.    <version>8.0.12</version>

  20. </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实现:

  1. @Service

  2. @AllArgsConstructor

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


  4.    // 增

  5.    @Override

  6.    public int insertUser(User user) {

  7.        return baseMapper.insert( user );

  8.    }


  9.    // 改

  10.    @Override

  11.    public int updateUser(User user) {

  12.        return baseMapper.updateById( user );

  13.    }


  14.    // 删

  15.    @Override

  16.    public int deleteUser(User user) {

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

  18.    }


  19.    // 查

  20.    @Override

  21.    public User findUserByName( String userName ) {

  22.        return baseMapper.getUserByName( userName );

  23.    }

  24. }

  • Controller类

  1. @RestController

  2. @RequestMapping("/user")

  3. public class UserContorller {


  4.    @Autowired

  5.    private UserService userService;


  6.    // 增

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

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

  9.        return userService.insertUser( user );

  10.    }


  11.    // 改

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

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

  14.        return userService.updateUser( user );

  15.    }


  16.    // 删

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

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

  19.        return userService.deleteUser( user );

  20.    }


  21.    // 查

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

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

  24.        return userService.findUserByName( userName );

  25.    }

  26. }

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


实际实验【乡爱加持】

  • 启动项目

很牛批的 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,比如我们修改 赵四 那条记录的名字为 赵四(ZhaoFour

  • 删除记录

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

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

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


最关心的分页问题

  • 首先装配分页插件

@Beanpublic PaginationInterceptor paginationInterceptor() {    return new PaginationInterceptor();}
  • Mapper类

  1. public interface UserMapper extends BaseMapper<User> {


  2.    // 普通查询

  3.    User getUserByName( String userName );


  4.    // 分页查询

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

  6. }

  • Service类

  1. @Service

  2. @AllArgsConstructor

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


  4.    // 查:普通查

  5.    @Override

  6.    public User findUserByName( String userName ) {

  7.        return baseMapper.getUserByName( userName );

  8.    }


  9.    // 分页查

  10.    @Override

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

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

  13.    }

  14. }

  • Controller类

@GetMapping( value = "/page")public Object getUserPage( Page page, User user ) {    return userService.getUserPage( page, user );}

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

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


写在最后

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

个人网站:www.codesheep.cn (程序羊)

更多热文在此:

  ●  Spring Boot 系列实战文章合集(源码已开源)

  ●  程序员写简历时必须注意的技术词汇拼写

  ●  利用K8S技术栈打造个人私有云系列连载文章

  ●  从一份配置清单详解Nginx服务器配置

  ●  一文上手 Elasticsearch常用可视化管理工具

  ●  Docker容器可视化监控中心搭建

  ●  利用ELK搭建Docker容器化应用日志中心

  ●  RPC框架实践之:Google gRPC

  ●  一文详解 Linux系统常用监控工具


作者更多 务实、能看懂、可复现的 技术文章尽在公众号 CodeSheep,欢迎扫码订阅,第一时间获取更新 ⬇️⬇️⬇️


©著作权归作者所有:来自51CTO博客作者mb5fdcae83766b7的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 互联网开发十大顶级开源项目巡礼!
  2. Vue.js任务列表 可本地存储任务数据
  3. 推荐几个炫酷的Python开源项目
  4. 疫情防控不能松懈,利用数据挖掘做好重点区域人群密度预测
  5. 芋道 Spring Boot 数据库版本管理入门
  6. Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
  7. python六大数据类型
  8. 超越 Cookie:当今的浏览器端数据存储方案[每日前端夜话0xA3]
  9. 芋道 Spring Boot 多数据源(读写分离)入门

随机推荐

  1. 来了!Django 2.2 正式发布
  2. 添加到我的小程序动画实现详细讲解,轻松学
  3. 一份来自 StackOverflow 的最佳 Python
  4. 如何使用Python执行系统命令?Python学习
  5. 详解什么是平衡二叉树(AVL)(修订补充版)
  6. 什么是平衡二叉树(AVL)
  7. rsyslog日志服务器搭建
  8. VS Code 的 Python 扩展有大更新
  9. 【图解数据结构】 一组动画彻底理解归并
  10. 每天一算:Contains Duplicate II