通过mybatis-plus 在spring boot 中实现只让接口返回当天数据

想做个展示食堂菜单的功能,用的若依二开,本来打算用jpa,无奈实在不怎么顺利,铜鼓一天都没有进展,想着过两天要开发核心功能了——“留给中国队的时间不多了"——于是深夜24:00 决定,换写法。

问下ai,感觉mybatis-plus的写法也很优雅,遂记录一下学习过程。

1首先是在项目中集成mybatis-plus

在pom.xml添加,(作者写这篇文章是24/10/28 vol 3.5.9是24号发布的)

<dependency>  
    <groupId>com.baomidou</groupId>  
    <artifactId>mybatis-plus-boot-starter</artifactId>  
    <version>3.5.9</version>  
</dependency>

复制粘贴完毕后,选择重新加载maven。

2 设计实体类

尽管jpa不需要@TableName注解,但是在注入mybatis-plus 这种ORM框架时,@TableName是必不可少的,他用来明确指定实体类与数据表之间的映射关系。

@TableName("真实库表名")
将它摆在这里就好

3 制作mapper接口

看起来,我们的进度已经过半了,胜利在望

在MVC架构下,不出意外大家都会有一个mapper层,直接写在里面就可以

(不要忘了@mapper 注解)

//自定义查询方法
    @Select("SELECT * FROM cookiemenu_design where DATE (date) = CURDATE()")
    List<CookiemenuDesign> getCookiemenuDesign();

在这段中

@Select 用于编写自定义的sql语句

DATE(create_time) = CURDATE() 是 SQL 条件,用于过滤出当天创建的数据。

如果这部分没有什么问题,接下来我们进入到Service层编写

4 写业务逻辑在service中

业务逻辑很简单

 // 调用mapper中的自定义查询方法
    public List<CookiemenuDesign> getCookiemenuDesign(){
        return cookiemenuDesignMapper.getCookiemenuDesign();
    }

因为核心部分依靠基于Mybatis-plus本身,而不是咱们的逻辑

5 接下来处理Controller 层

 @GetMapping("today")
    public List<CookiemenuDesign> getCookiemenuDesign(){
        return cookiemenuDesignService.getCookiemenuDesign();
    }

去前端验证,数据已抓到

优雅 无需多言

过了一天,发现了一个bug,接口传递的数据只有id与date字段有值

开始debug

首先给mapper做一个断点,看看数据,发现看不懂

于是果断放弃这部分,先使用笨方法推理一下。

首先已知,MybatisPlus出现这种问题,可能会在以下几个方面存在问题  

        1 sql 问题 

     将我们写在mapper 接口的sql拿到navicat跑一下,发现没问题

既然他的数据返回是正常的

我们先不处理这部分,转而查看实体映射是不是出了问题

2 实体映射

实体层有三个诡异点

1 id 与 data 是非空型

1 返回数据的都是短名称(“id”||‘data’)

2 varchar型的没有返回数据

咱们先一个个尝试,先用惯性思维将其中一个字段改为非空试试

当然,只要稍加推导就知道这个不是重要原因,非空只是希望不向数据库传空值,而这个bug是因为后端向前端传了空值

那我们选择短名称,可能问题就是单纯出在了没有做映射也说不准

问题解决,确实是短名称的原因

接下来我们处理这部分的bug

我们先不考虑更改代码结构,因为这有可能会导致奇奇怪怪的问题

既然以这名称做切入点,首先考虑的就是驼峰映射,尽管在构造方法中我们已经采用了驼峰命名法,但事实胜于雄辩,结果已经不言自明。

在mybatis-config.xml中粘入

<settings>
        <!-- 使用驼峰命名法转换字段 -->
		 <setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>

重启项目

数据抓到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值