看看我如何用无极低码秒掉Springboot+mybatis组合

这篇具有很好参考价值的文章主要介绍了看看我如何用无极低码秒掉Springboot+mybatis组合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


先看图,大家看看这个界面,根据这个界面我们简单看一下,这个界面要写接口的话,接口需要实现分组查询、模糊检索、热门查询、最新查询、分页查询。但是我一行代码也没写。

​​​​看看我如何用无极低码秒掉Springboot+mybatis组合,sql,java,无极低码,spring boot,mybatis,后端

假如我要写代码的话接口该怎么写?

举个相似的例子

要实现这样一个综合性的新闻查询接口,我们将通过Spring Boot和MyBatis来设计各个层次的代码,确保既能单独实现每种查询,也能灵活组合查询条件。以下是分步骤的实现方案:

通过一下代码,您可以实现以下功能:

  • 查询全部数据(不传任何参数)
  • 分组查询(通过columnId
  • 标题模糊检索(通过title
  • 热门查询(通过设置hot=true
  • 最新查询(通过设置latest=true
  • 分页查询(通过pagesize
  • 以及这些条件的任意组合查询。

请根据您的实际数据库表结构调整SQL语句和实体类属性。

1. 实体类 (News.java)

package com.example.news.entity;

import java.util.Date;

public class News {
    private Long id;
    private String title;
    private String content;
    private Long columnId; // 栏目ID
    private Integer views; // 浏览量
    private Date publishTime; // 发布时间

    // Getter and Setter methods
}

2. MyBatis Mapper 接口 (NewsMapper.java)

package com.example.news.mapper;

import com.example.news.entity.News;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

public interface NewsMapper {
    @SelectProvider(type = NewsSqlBuilder.class, method = "buildSearchQuery")
    List<News> searchNewsWithConditions(Map<String, Object> params);

    @Select("SELECT * FROM news ORDER BY views DESC LIMIT #{limit}")
    List<News> findHotNews(@Param("limit") int limit);

    @Select("SELECT * FROM news ORDER BY publish_time DESC LIMIT #{limit}")
    List<News> findLatestNews(@Param("limit") int limit);
}

class NewsSqlBuilder {
    public static String buildSearchQuery(Map<String, Object> params) {
        StringBuilder sql = new StringBuilder("SELECT * FROM news WHERE 1=1");
        
        if (params.containsKey("title")) {
            sql.append(" AND title LIKE CONCAT('%', #{title}, '%')");
        }
        if (params.containsKey("columnId")) {
            sql.append(" AND column_id = #{columnId}");
        }
        if (params.containsKey("isLatest")) {
            sql.append(" ORDER BY publish_time DESC");
        } else if (params.containsKey("isHot")) {
            sql.append(" ORDER BY views DESC");
        }
        if (params.containsKey("page") && params.containsKey("size")) {
            int offset = (Integer) params.get("page") * (Integer) params.get("size");
            sql.append(" LIMIT #{offset}, #{size}");
        }
        
        return sql.toString();
    }
}

3. 新闻服务类 (NewsService.java)

package com.example.news.service;

import com.example.news.entity.News;
import com.example.news.mapper.NewsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class NewsService {
    private final NewsMapper newsMapper;

    @Autowired
    public NewsService(NewsMapper newsMapper) {
        this.newsMapper = newsMapper;
    }

    public List<News> searchNews(String title, Long columnId, boolean isLatest, boolean isHot, int page, int size) {
        Map<String, Object> params = new HashMap<>();
        params.put("title", title);
        params.put("columnId", columnId);
        params.put("isLatest", isLatest);
        params.put("isHot", isHot);
        if (page > 0 && size > 0) {
            params.put("page", (page - 1));
            params.put("size", size);
        }
        return newsMapper.searchNewsWithConditions(params);
    }

    // 其他方法如findHotNews, findLatestNews...
}

4. 控制器类 (NewsController.java)

package com.example.news.controller;

import com.example.news.entity.News;
import com.example.news.service.NewsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class NewsController {
    private final NewsService newsService;

    @Autowired
    public NewsController(NewsService newsService) {
        this.newsService = newsService;
    }

    @GetMapping("/news")
    public List<News> searchNews(
            @RequestParam(value = "title", required = false) String title,
            @RequestParam(value = "columnId", required = false) Long columnId,
            @RequestParam(value = "latest", defaultValue = "false") boolean latest,
            @RequestParam(value = "hot", defaultValue = "false") boolean hot,
            @RequestParam(value = "page", defaultValue = "1") int page,
            @RequestParam(value = "size", defaultValue = "10") int size) {
        return newsService.searchNews(title, columnId, latest, hot, page, size);
    }

    // 可以添加单独的路由来直接调用findHotNews和findLatestNews
}

这时候我们来看我如何不写一行代码实现以上代码实现的接口,用下面这一段就可以实现如上代码实现的功能了


select
===
select id ,title as t,latest cTime,views from d_chart where 1=1 
∮byid 
  and id='#byid#'
∮bytitle 
  and title like'%#bytitle#%'
∮bygid
  and groupid =#bygid#
∮byhot
  order by views #byhot#
∮bynew
  order by latest #bynew#
;

没错就是这么神奇,无极低码通过自定义sql引擎模板实现低代码开发。这样的代码,开发简单,维护简单,调试简单,会sql1分钟就可以学会服务编写。更多使用教程请关注无极低码https://wheart.cn文章来源地址https://www.toymoban.com/news/detail-860819.html

到了这里,关于看看我如何用无极低码秒掉Springboot+mybatis组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何用SpringBoot整合Redis(详细讲解~)

    大家好,我是卷心菜。本篇主要讲解用SpringBoot整合Redis,如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。 🎁 作者简介: 在校大学生一枚,Java领域新星创作者,Java、Python正在学习中,期待和大家一起学习一起进步~ 💗 个人主页:我是一棵卷心菜的个人主页 🔶 本

    2024年01月17日
    浏览(35)
  • x264低时延低码率高质量调参

    h264解码延迟优化_H264编码参数优化: 参考文章:Video Codecs Analysis and Tuning ,文档下载地址:http://www.yuvsoft.com/pdf/x264_parameters_comparison.pdf 文章中详细比较了48种不同x264参数组合,比较得到如下6类最优的x264编译参数,我将文章中的x264参数转化为ffmpge命令参数如下: 1)fastest pr

    2024年02月15日
    浏览(32)
  • 【音视频处理】音频编码AAC详解,低码率提高音质?

    大家好,欢迎来到停止重构的频道。 本期我们介绍 音频编码格式AAC 。 AAC是音频最常用的编码格式之一 ,几乎所有的播放器都支持这个编码格式。 其他音频编码格式都是类似的,只是某些细节存在差别,如压缩算法、某些音频参数存在限制等。 我们按这样的顺序讨论 :

    2024年02月09日
    浏览(91)
  • 如何用docker在自己服务器上部署springboot项目

    一、将springboot项目打包 1、maven clean项目 2、maven package项目 打包成功之后生成jar文件(在target目录下) 3、为Java创建Dockerfile 引入jdk8的Docker镜像 FROM openjdk:8 为了使运行其余命令时更容易,让我们设置映像的工作目录。这将指示Docker使用此路径作为所有后续命令的默认位置。通

    2024年02月04日
    浏览(50)
  • 一文带你如何用SpringBoot+RabbitMQ方式来收发消息

    预告了本篇的内容:利用RabbitTemplate和注解进行收发消息,还有一个我临时加上的内容:消息的序列化转换。 本篇会和SpringBoot做整合,采用自动配置的方式进行开发,我们只需要声明RabbitMQ地址就可以了,关于各种创建连接关闭连接的事都由Spring帮我们了~ 交给Spring帮我们管

    2024年02月09日
    浏览(41)
  • 如何用Java+SpringBoot+Vue构建一个智能物流管理系统?

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月13日
    浏览(35)
  • [开源]一个低代码引擎,支持在线实时构建低码平台,支持二次开发

    TinyEngine低代码引擎使能开发者定制低代码平台,支持在线实时构建低码平台,支持二次开发或集成低码平台能力。 使用MIT开源协议 TinyEngine是一个低代码引擎,基于这个引擎可以构建或者开发出不同领域的低代码平台。 跨端跨框架前端组件 支持在线实时构建、支持二次开发

    2024年02月07日
    浏览(40)
  • springboot如何用jar包启动,同时为不同机房设置不同的配置文件

    示例代码: 利用maven-assembly-plugin,抽取配置文件到conf目录下, 示例代码: 最终效果如下: 示例代码如下: 最终达到的效果是: 将springboot的jar包解压后,可以看到.MF文件中加了一个类路径 ../conf 特别注意: java -jar XX 使用-jar启动java进程的,-classpath不会生效了,如果要加类

    2024年02月05日
    浏览(33)
  • 精彩!手把手教你玩转低代码/无代码平台的低码脚本——入门篇

    1.概述 旨在针对低代码脚本做详细介绍,涵盖操作方式,使用路径等,同时汇总低代码常用场景及其写法,为使用低代码的用户提供对应的案例,便于低代码的上手,减少开发的时间。 2.功能介绍 低代码脚本为低代码重要组成部分,可搭配不同场景,弥补复杂需求无法通过配

    2024年02月06日
    浏览(46)
  • Spring Boot进阶(68):如何用SpringBoot轻松实现定时任务?集成Quartz来帮你!(附源码)

            Quartz是一个非常流行的开源调度框架,它提供了许多强大的功能,如定时任务调度、作业管理、任务持久化等。而SpringBoot是目前Java开发中非常流行的框架之一,其对各种开源框架集成非常方便。本篇文章将介绍如何在SpringBoot中集成Quartz,以便于更好的管理和调度

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包