Python工程师Java之路(t)SpringBoot极速极简入门代码

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python工程师Java之路(t)SpringBoot极速极简入门代码相关的知识,希望对你有一定的参考价值。

文章目录

0、概述

SpringBoot实现数据服务接口

1、使用IDEA创建项目

  • Intellij IDEA版本:2021.1
  • Spring Boot版本:2.7.5

1、创建项目

2、添加依赖(可选的)

3、初建目录结构

2、代码

浏览器
↑↓
Application(地址、端口localhost:8070
↑↓
controller(URL路径、GET和POST方法)
↑↓
service(连接数据库)
↑↓
mapper(发送SQL)
↑↓
数据库

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo3</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- controller相关 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 数据库相关 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 通过注解快速编写JavaBean -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

application.properties

server.port=5000
spring.datasource.url=jdbc:mysql://localhost:3306/库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=密码
  • server.port配置端口
  • spring.datasource配置数据库连接

Application

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.example.demo.mapper")
public class Demo3Application 
    public static void main(String[] args) 
        SpringApplication.run(Demo3Application.class, args);
    

  • 启动类上方添加@MapperScan注解,指明mapper包路径

bean

package com.example.demo.bean;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class User 
    Integer uid;
    String name;

  • Lombok通过注解来简化JavaBean书写,如:get方法、set方法、构造方法……
  • @Data含Getter、Setter、ToString等方法
    @AllArgsConstructor含所有参数的构造器

controller

package com.example.demo.controller;

import com.example.demo.bean.User;
import com.example.demo.service.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Controller
@RestController
@RequestMapping("/school")
public class UserController 

    // @Autowired自动装载服务类
    @Autowired
    private UserServiceImpl userServiceImpl;

    @RequestMapping("/user")
    public String getUser(@RequestParam("uid") Integer i,
                          @RequestParam("name") String s) 
        User user = userServiceImpl.getUser(i, s);
        return "uid:" + user.getUid() + "\\nname:" + user.getName();
    

    @RequestMapping("/users")
    public String getUsers() 
        // 可变的字符序列
        StringBuilder uid_s = new StringBuilder("[");
        StringBuilder name_s = new StringBuilder("[");
        // 遍历
        List<User> users = userServiceImpl.getUsers();
        for (int i = 0; i < users.size(); i++) 
            User user = users.get(i);
            Integer uid = user.getUid();
            String name = user.getName();
            // 追加字符串
            uid_s.append("\\"").append(uid).append("\\"");
            name_s.append("\\"").append(name).append("\\"");
            if (i < users.size() - 1) 
                uid_s.append(",");
                name_s.append(",");
             else 
                uid_s.append("]");
                name_s.append("]");
            
        
        return "\\n" +
                "  \\"uid\\":" + uid_s + ",\\n" +
                "  \\"name\\":" + name_s + "\\n" +
                "";
    

  • @ResponseBody
    将controller的方法返回的对象转换为指定的格式,写到response对象的body区
    常用来返回JSON或XML数据
  • @RestController
    @Controller+@ResponseBody,可用来返回JSON数据
  • @RequestMapping
    可添加在 控制类 或 方法 上,用于建立请求URL和请求处理方法之间的对应关系
    value指定请求URL,method指定请求方式,默认GET
    @RequestMapping(value="/a",method=RequestMethod.GET)可简写为@RequestMapping("/a")
    上面代码 类和方法 叠加URL为/school/user
  • @RequestParma("uid")
    位于 方法参数数据类型 之前,接收请求路径中的键值对

service

package com.example.demo.service;

import com.example.demo.bean.User;
import com.example.demo.mapper.MysqlMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl

    // 自动装载 Mapper 接口实现类
    @Autowired
    MysqlMapper mysqlMapper;

    // 传参测试,获取单个用户
    public User getUser(Integer i, String s) 
        return mysqlMapper.selectUser(i, s);
    

    // 获取多个用户
    public List<User> getUsers() 
        return mysqlMapper.selectUsers();
    

  • @Service注解
    位于实现类定义语句上方,把该实现类注册成一个组件
    该组件常驻内存,默认为单态(即单例,整个服务器进程,该类对象只有一个)
  • @Autowired注解
    位于成员变量(属性)定义语句上方,修饰类的属性
    控制器组件会扫描接@Autowired注解的接口,去内存的常驻组件中寻找适配组件(实现类)

mapper

package com.example.demo.mapper;

import com.example.demo.bean.User;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MysqlMapper 
    // 返回单个用户(#传参,字符串不需要引号)
    @Select("SELECT #u AS uid,#n AS name")
    User selectUser(@Param("u")Integer i, @Param("n")String s);

    // 查多个用户
    @Select("SELECT 101 AS uid,'Zoe' AS name UNION ALL SELECT 102 AS uid,'Mary' AS name")
    List<User> selectUsers();

  • @Select注解,位于方法定义语句上方
    Mybatis会自动实现JDBC、对应Mapper层接口,并在启动时将该实现类加载到Tomcat容器中
    注意:
    1、还要在启动类上方添加@MapperScan,指明mapper包路径
    2、还要在服务层@Autowired自动装载该实现类
  • @Param注解:传参给SQL

3、浏览器访问

输入controller定义的URL路径

4、附录

🔉
starterˈstɑːrtərn. (机器或引擎的)启动装置;adj. 起步时使用的
Autowiren. 自动装配
stereotypeˈsteriətaɪpn. 模式化的思想,老一套;公式化人物;铅版;
stereo type定型
wiredˈwaɪərdadj. 有线的,联网的;v. 接通(电源);(用电线)连接(wire 的过去式和过去分词)
wireˈwaɪərn. 金属线;导线;<美>电报;v. 接通(电源);(用电线)接通;用金属线固定
bootbuːtn. 靴子;猛踢;(汽车的)后备箱;v. 猛踢;启动(电脑);在车轮上装制动装置

以上是关于Python工程师Java之路(t)SpringBoot极速极简入门代码的主要内容,如果未能解决你的问题,请参考以下文章

Python工程师Java之路(t)SpringBoot部署步骤 java -jar

Python工程师Java之路(t)SpringBoot配置文件

Python工程师Java之路(t)SpringBoot配置文件

Python工程师Java之路(t)SpringBoot配置文件

Python工程师Java之路(t)SpringBoot极速极简入门代码

Python工程师Java之路(t)SpringBoot极速极简入门代码