Mybatis-Plus 真好用(乡村爱情加持)

简介: 写在前面MyBatis的增强方案确实有不少,甚至有种感觉是现在如果只用 “裸MyBatis”,不来点增强插件都不好意思了。这不,在上一篇文章《Spring Boot项目利用MyBatis Generator进行数据层代码自动生成》 中尝试了一下 MyBatis Generator。

乡村爱情


写在前面

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;
AI 代码解读

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>
AI 代码解读

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

  • MyBatis Plus配置

项目配置

mybatis-plus:
  mapper-locations: classpath:/mapper/*Mapper.xml
AI 代码解读

新增 MyBatis Plus配置类

@Configuration
@MapperScan("cn.codesheep.springbtmybatisplus.mapper")
public class MyBatisConfig {
}
AI 代码解读

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


业务编写

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

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

  • 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 );
}
AI 代码解读

Service实现:

@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    // 增
    @Override
    public int insertUser(User user) {
        return baseMapper.insert( user );
    }

    // 改
    @Override
    public int updateUser(User user) {
        return baseMapper.updateById( user );
    }

    // 删
    @Override
    public int deleteUser(User user) {
        return baseMapper.deleteById( user.getUserId() );
    }

    // 查
    @Override
    public User findUserByName( String userName ) {
        return baseMapper.getUserByName( userName );
    }
}
AI 代码解读
  • Controller类
@RestController
@RequestMapping("/user")
public class UserContorller {

    @Autowired
    private 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 );
    }
}
AI 代码解读

通过以上几个简单的步骤,我们就实现了 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"}
AI 代码解读

发送插入请求

插入结果

  • 修改记录

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

发送修改请求

修改结果

  • 删除记录

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

image.png

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

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


最关心的分页问题

  • 首先装配分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}
AI 代码解读
  • Mapper类
public interface UserMapper extends BaseMapper<User> {

    // 普通查询
    User getUserByName( String userName );

    // 分页查询
    IPage<List<User>> getUsersPage( Page page, @Param("query") User user );
}
AI 代码解读
  • Service类
@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    // 查:普通查
    @Override
    public User findUserByName( String userName ) {
        return baseMapper.getUserByName( userName );
    }

    // 分页查
    @Override
    public IPage getUserPage(Page page, User user) {
        return baseMapper.getUsersPage( page, user );
    }
}
AI 代码解读
  • Controller类
@GetMapping( value = "/page")
public Object getUserPage( Page page, User user ) {
    return userService.getUserPage( page, user );
}
AI 代码解读

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

分页查询结果

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


写在最后

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



目录
打赏
0
0
0
0
2365
分享
相关文章
|
7月前
|
当Java数据类型遇上“爱情”,会擦出怎样的火花?
当Java数据类型遇上“爱情”,会擦出怎样的火花?
77 1
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
87 0
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
73 0
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
45 0
《万国觉醒》之游戏战报FreeMarker模板引擎实现
《万国觉醒》之游戏战报FreeMarker模板引擎实现
122 0
优质高效!阿里甩出SpringBoot巅峰之作,进阶不二之选
十多年前,Spring颠覆了传统的JavaEE技术,迎来了Java企业级应用开发的春天,然而今天的Spring Boot却站在Spring巨人的肩膀上,让我们可以更高效地开发与交付。Java Web后端也好,App 后台也罢,甚至独立后台应用,等等,Spring Boot 都是你不可或缺的高效率工具。
开拓者的人生:比尔盖茨的成功启示录
开拓者的人生:比尔盖茨的成功启示录
311 0
WineGometa红酒链游项目开发的核心技术
WineGometa红酒链游项目是由WineGometa团队开发的。该项目的目标是为红酒爱好者提供一个安全、透明、高效的红酒交易平台,同时推广红酒文化和品牌。 WineGometa红酒链游的核心技术是区块链技术,通过智能合约的方式确保红酒数字资产的安全和可信。用户可以在WineGometa上购买、收藏、出售红酒,同时还可以参加红酒相关的活动和游戏,获取红酒相关的奖励。