基于VS code 实现Java前后端打通—基础—使用Springboot+postgreSql+mybatis+Navicat

前言:

作者学习webjava后的而总结,总的流程概括就是先使用springboot创建项目,在application.properties中完成相应的postgreSql和mybaits的环境配置和.xml文件中dependecy依赖配置,entities实现数据表的类型模板,分别创建controller用于控制书写相应的路由和方法(其中含参函数使用@PathVariable eg:@PathVariable String name),dao接口定义把访问数据库的代码封装起来,dao在数据库与业务逻辑(Service)之间,service实现服务的方法提供,在mappers中featurelayer.xml文件中实现sql语句,至此逻辑链就跑通了,启动服务器,在浏览器中输入相应url,完成加载,并在apifox中实现相关接口。作者的书写流程为先dao中写接口,service中写方法,然后xml中实现sql语句,然后在控制器中完成路由配置。

操作步骤:

创建一个postgresql 数据库,并新建一张featurelayer 数据表,数据表的字段信息如下,并为数据表中填充3 条记录创建数据表,并声明id为主键

5.2,插入三段数据

5.3创建江西省河流数据,江西省道路数据,江西省村落点数据等数据。

5.4 在navicat中建立并确认数据库链接

5.5使用spring框架创建javaweb项目

5.6创建一个springboot 项目,并引入mybatis 及postgresql 的依赖,在

application.properties 文件里配置项目的端口,并增加数据库的配置信息。

5.7创建符合MVC 架构的文件夹组织方式

5.8使用源代码操作生成get,set,在entities 目录里分别创建一个FeatureLayer.java 的类对象,对象属性

5.9将xml文件放在resources的根目录下

5.10在dao 目录里创建一个FeatureLayerDao.java 的接口,并为接口增加

Mapper 的注解;

 5.11从Spring2.5开始,开始支持使用注解来自动装配Bean的属性。它允许更细粒度的自动装配,我们可以选择性的标注某一个属性来对其应用自动装配。

5.11在resources 文件里创建featurelayer.xml 文档,配置FeatureLayerDao

与数据表的关联

5.12配置路由

5.13启动服务器,并在浏览器中打开

5.14同理声明筛选name和type的方法等系列

5.15 出现小bug即在浏览器中出现筛选后的结果,由于id被筛选,所以显示为0,我意识到和entities的配置与.xml中ResultType有关系,和基于ts+vue3+vite的项目中XXX.d.ts类似提供了类型模板,更加安全

5.16于是创建FeatureLayerOnly.java文件来解决小bug

5.17 解决上述问题与操作难点就是重复配置依赖,写接口,实现接口,完成sql相应数据库操作。

核心源码:

package studio.ilocation.ex3mybatis.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import studio.ilocation.ex3mybatis.Service.FeaturelayerService;
import studio.ilocation.ex3mybatis.entities.FeatureLayer;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;




@RestController
@RequestMapping("/ex3")
public class LayerController {
    @Autowired
    private FeaturelayerService featLyrService;
    // 获取全部要素服务
    @GetMapping("/query/all")
    public List<FeatureLayer> queryAllFeatLyrs(){

        return featLyrService.queryAllFeatLyrs();
    }
    // 通过名字筛选获取全部要素服务
    @GetMapping("/query/all/{name}")
    public List<FeatureLayer> queryByNameFeatLyrs(@PathVariable String name) {
        return featLyrService.queryAllFeatLyrsByName(name);
    }
    // 获取只包含名字和类型要素服务
    @GetMapping("/query/only")
    public List<FeatureLayer> queryNameAndTypeFeatLyrs() {
        return featLyrService.selectOnlyNameAndTypeFeatureLayers();
    }
    // 通过名字获取只包含名字和类型要素服务
    @GetMapping("/query/only/{name}")
    public List<FeatureLayer> queryNameAndTypeByNameFeatLyrs(@PathVariable String name) {
        return featLyrService.selectOnlyNameAndTypeFeatureLayersByName(name);
   }
    
}
package studio.ilocation.ex3mybatis.dao;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import studio.ilocation.ex3mybatis.entities.FeatureLayer;
@Mapper
public interface FeatureLayerDao {
    // 声明实现获取全部要素接口
    List<FeatureLayer> selectAllFeatureLayers();
    // 声明实现通过名字筛选获取全部要素接口
    List<FeatureLayer> selectAllFeatureLayersByName(String name);
    // 声明实现获取只包含名字和类型要素接口
    List<FeatureLayer> selectOnlyNameAndTypeFeatureLayers();
    // 声明实现通过名字获取只包含名字和类型要素接口
    List<FeatureLayer> selectOnlyNameAndTypeFeatureLayersByName(String name);
}

package studio.ilocation.ex3mybatis.entities;

public class FeatureLayer {
    private int id;
    private String name;
    private String type;
    public int getId(){
        return id;
    }
    public void setId(int id){
        this.id = id;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name =name;
    }
    public String getType(){
        return type;
    }
    public void setType(String type){
        this.type = type;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XX">
    <!-- 实现获取全部要素调用sql语句 -->
    <select id="selectAllFeatureLayers"
            resultType="studio.ilocation.ex3mybatis.entities.FeatureLayer">
        select * from featureLayer;
    </select>
    <!-- 实现调用通过名字筛选获取全部要素sql语句 -->
    <select id="selectAllFeatureLayersByName"
            resultType="studio.ilocation.ex3mybatis.entities.FeatureLayer">
        select * from featureLayer
        where name = #{name};
    </select>
    <!-- 实现调用获取只包含名字和类型要素sql语句 -->
       <select id="selectOnlyNameAndTypeFeatureLayers"
            resultType="studio.ilocation.ex3mybatis.entities.FeatureLayerOnly">
        select name,type from featureLayer;
    </select>
    <!-- 实现调用通过名字获取只包含名字和类型要素sql语句 -->
        <select id="selectOnlyNameAndTypeFeatureLayersByName"
            resultType="studio.ilocation.ex3mybatis.entities.FeatureLayerOnly">
        select name,type from featureLayer
        where name = #{name};
    </select>
</mapper>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】包裹式特征选择之序列前向选择法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

php 快速入门(一)

一、配置系统环境 1.1 安装软件 1、安装php的开发软件&#xff1a;phpstorm 在这个软件中写代码 2、安装php的运行软件&#xff1a;phpstduy 写好的php程序需要放到phpstduy中&#xff0c;用户才能访问和测试 安装过程注意事项&#xff1a;安装的路径中不能有空格和中文字符&…

day6:STM32MP157——串口通信实验

使用的是cortex A7内核 【串口通信的工作原理】 本次实验使用的是uart4的串口&#xff0c;分别使用了uart4_tx和uart4_rx两个引脚。根据板子的原理图我们可以知道&#xff0c;他们分别对应着芯片的PG11和PB2 从引脚名字也可以知道使用了GPIO口&#xff0c;所以本次实验同样需…

MCGS学习——用户管理

用户管理介绍 用户管理主要是为了实现触摸屏的安全操作&#xff0c;工业过程控制中&#xff0c;应该尽量避免由于人为的误操作所引发的故障或事故&#xff0c;而某些失误带来的后果是致命的&#xff1b;通过用户管理严格限制各类操作的权限&#xff0c;使不具备操作资格的人员…

软考高级:架构与中间件技术-软件复用概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

CHAT~(持续更新)

CHAT&#xff08;持续更新&#xff09; 实现一个ChatGPT创建API设计页面布局业务操作技术架构 编码其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略&#xff0c;想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作 注册登…

Linux 进程通信:匿名管道、实现进程池

目录 一、进程间通信 1、 为什么需要进程通信 2、发展和分类 二、管道 1、概念 2、特点 2、复制并共享 3、用fork来共享管道原理 4、站在文件描述符角度-深度理解管道 5、站在内核角度-管道本质 三、匿名管道 1、概念 2、创建 3、snprintf 4、父子进程中进行单…

抽取CLOB字段中XML的特定元素的VALUE值

在ORACLE数据库中&#xff0c;有时XML文件会被保存在CLOB字段中。 这时候&#xff0c;若是我们要获取此字段XML中特定元素的VALUE值&#xff0c;就需要用到xmltype 这个函数。 如下面的 XML文件&#xff0c;保存在 TABLE_A 的CLOB_K 字段&#xff0c;若是我们要获取其中的 Y…

onnx | onnx-simplifier安装和使用

安装&#xff1a; pip install -i https://pypi.douban.com/simple onnx-simplifierpip install -i http://mirrors.aliyun.com/pypi/simple onnx-simplifier 使用&#xff1a; python -m onnxsim face.onnx face_sim.onnx

Unity Canvas的三种模式

一、简介&#xff1a; Canvas的Render Mode一共有三种模式&#xff1a;Screen Space -OverLay、Screen Space-Camera、World Space Screen Space - Overlay&#xff08;屏幕空间 - 覆盖&#xff09;&#xff1a; 这是最简单的 Canvas 渲染模式。UI 元素在这个模式下将渲染在屏…

Oracle参数文件详解

1、参数文件的作用 参数文件用于存放实例所需要的初始化参数&#xff0c;因为多数初始化参数都具有默认值&#xff0c;所以参数文件实际存放了非默认的初始化参数。 2、参数文件类型 1&#xff09;服务端参数文件&#xff0c;又称为 spfile 二进制的文件&#xff0c;命名规则…

PostgreSQL11 | Windows系统安装PostgreSQL

本教程选取与参考书籍《PostgreSql11 从入门到精通》&#xff08;清华大学出版社&#xff09;的11大版本最新小版本11.22的安装作为教程案例 下载 下载PostgreSQL installer 下载到本地 安装 运行安装引导器 中国地区语言选项&#xff08;暂时&#xff09; Chinese(Simplifie…

2024牛客寒假算法基础集训营4补题

E&#xff1a;贪心数据结构 首先&#xff0c;我们看一个例子&#xff1a; 114514&#xff0c;令k3,我们从左开始&#xff0c;1&#xff0c;1&#xff0c;4&#xff0c;此时为3的倍数&#xff0c;那么我们就截断。 因为若我们在此截断&#xff0c;后面的5会对以后的数产生有利…

SSM | SSM框架整合

目录: 一、整合环境搭建整合思路准备所需JAR包编写配置文件 二、整合应用测试 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#xff01; 该文章参考学习教材为&#xff1a; 《Java EE企业级应…

Qt——2D画图

基础画图函数 矩形 painter.drawRect(50,50,200,100); 圆角矩形 painter.drawRoundRect(50,50,200,200,50,50); xRadius和yRadius分别以矩形宽度和高度的一半的百分比指定&#xff0c;并且应该在0.0到100.0的范围内 弧线 painter.drawArc(50,50,200,200, -90*16, 90*16);…

基于nodejs+vue学生作业管理系统python-flask-django-php

他们不仅希望页面简单大方&#xff0c;还希望操作方便&#xff0c;可以快速锁定他们需要的线上管理方式。基于这种情况&#xff0c;我们需要这样一个界面简单大方、功能齐全的系统来解决用户问题&#xff0c;满足用户需求。 课题主要分为三大模块&#xff1a;即管理员模块和学生…

[AutoSar]BSW_ECUC模块配置

目录 关键词平台说明一、背景二、EcucGeneral2.1 BswInitialization 三、EcucHardware四、EcucPduCollection五、EcucPartitionCollection 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector &#xff0c; EB芯片厂商TI 英飞凌编程语…

三星解释其 108MP Nonacell 传感器中的 PDAF 像素遮蔽

Electronic Imaging 发表了三星论文“采用 Nonacell 和 Super PD 的 CMOS 图像传感器的新型 PDAF 校正方法,以提高合并模式下的图像质量”,作者为 Yeongheup Jang、Hyungwook Kim、Kundong Kim、Sungsu Kim、Sungyong Lee 和 Joonseo Yim。 本文提出了一种新的 PDAF 校正方法…

【stable diffusion扩散模型】一篇文章讲透

目录 一、引言 二、Stable Diffusion的基本原理 1 扩散模型 2 Stable Diffusion模型架构 3 训练过程与算法细节 三、Stable Diffusion的应用领域 1 图像生成与艺术创作 2 图像补全与修复 3 其他领域 四、Stable Diffusion的优势与挑战 &#x1f449;优势 &#x1f…

【云开发笔记No.9】Kanban与敏捷开发

Kanban看板起源于丰田。 看板&#xff08;Kanban&#xff09;一词来自日文&#xff0c;本义是可视化卡片。如下图所示&#xff0c;看板工具的实质是&#xff1a;后道工序在需要时&#xff0c;通过看板向前道工序发出信号——请给我需要数量的输入&#xff0c;前道工序只有得到看…