1. 前言

1.1.写本文的目的

  1. 记录自己从0到1建立SpringBoot+Mybatis项目
  2. 方便有其他语言的开发者能够从0到1快速衔接到JavaSpringBoot项目中
  3. 为之后Java项目的案例提供基础

1.2. 本文的内容

  1. IDEA的安装
  2. Maven的安装
  3. SpringBoot+Mybatis项目的搭建
  4. 启动项目,连接数据库以及代码编写
  5. 流程整理

2. IDEA的安装

2.1. IDEA的安装

本文使用的是IDEA2021版本,下载版本地址为:官网(https://www.jetbrains.com/idea/download)

2.3. 设置IDEA

对于目标受众来说,设置匹配开发者开发模式的开发方式

  1. 快捷键以及调试快捷键

在这里插入图片描述

3. Maven的安装

具体可以参考:https://blog.csdn.net/weixin_44985115/article/details/115253160

4. SpringBoot+Mybatis项目的搭建

开发人员少废话

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面的这一步,第一次构建往往需要下载一段时间

在这里插入图片描述

往往在这一步如果项目代码内容不多可以在当前项目中直接编写,如果内容较多,我一般会删除一下文件夹内容

在这里插入图片描述

增加子项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以下我们开始通过Maven搭建代码框架

  • 修改Maven 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xiaocai</groupId>
    <artifactId>SpringBootMyGetDBDemo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatisGetDB</module>
    </modules>

    <name>SpringBootMyGetDBDemo</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <repositories>
    <repository>
      <id>nexus-release</id>
       <!-- 私服地址: http://10.1.102.47:9081/repository/maven-public/-->
      <url>私服地址/repository/maven-public/</url>
    </repository>
    <repository>
      <id>nexus-snapshots</id>
      <url>私服地址/repository/maven-snapshots/</url>
    </repository>
  </repositories>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>


  <dependencies>

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.6.3</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>2.6.3</version>
    </dependency>
    <!-- 核心功能 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.2.9</version>
    </dependency>


    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.3.3</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <version>2.6.3</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.3</version>
    </dependency>

  </dependencies>

  <pluginRepositories>
    <pluginRepository>
      <id>nexus</id>
      <name>Nexus</name>
      <!-- 这个地址是私服groups类型的地址,该地址从私服仓库列表的最后一列可查看 -->
      <url>私服地址/repository/maven-public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

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

需要点击右侧面板中的Reload All Maven Projects,点击之后如果初次构建则要下载一定的时间

在这里插入图片描述

5. 启动项目,连接数据库以及代码编写

5.1. 使用SpringBoot启动项目

package com.xiaocai;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Hello world!
 */
@SpringBootApplication
@RestController
public class App {

    @RequestMapping("/")
    public String home() {
        return "小菜不帅吗?";
    }

    public static void main(String[] args) {
        System.out.println("Hello World!");
        SpringApplication.run(App.class, args);
    }
}

在这里插入图片描述

添加文件夹application.yml

server:
  port: 8080

spring:
  application:
    name: jgdf-template
    version: v1.0-beta
  datasource:
    name: systemManager
    url: jdbc:postgresql://10.1.100.153:5432/clp
    username: clp
    password: clp
    driver-class-name: org.postgresql.Driver
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8


  logging:
    level:
      cn.piesat: debug
    file: ./logs/Spring.log

在这里插入图片描述
在这里插入图片描述

5.2. Mybatis代码获取数据库数据

创建文件夹entitymappermapper分辨创建文件User.javaUserMapper.javaUserMapper.xml

在这里插入图片描述
在这里插入图片描述

分别编写代码如下:

package com.xiaocai.entity;

public class User {
    private Long id;

    private String name;

    private String nickname;

    private String loginname;

    private String password;

    private String idnumber;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getLoginname() {
        return loginname;
    }

    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIdnumber() {
        return idnumber;
    }

    public void setIdnumber(String idnumber) {
        this.idnumber = idnumber;
    }
}

package com.xiaocai.mapper;

import com.xiaocai.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    User selectById(@Param("f_id") Integer f_id);

    User selectByUsername(@Param("f_name") String f_name);

    List<User> selectAll();
}
<?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="com.xiaocai.mapper.UserMapper">

    <resultMap id="userMap" type="com.xiaocai.entity.User">
        <id property="id" column="f_id" />
        <result property="name" column="f_name"/>
        <result property="nickname" column="f_nickname"/>
        <result property="loginname" column="f_loginname" />
        <result property="password" column="f_password"/>
        <result property="idnumber" column="f_idnumber"/>
    </resultMap>

    <sql id="FIELDS">
        f_id, f_name, f_nickname, f_loginname,f_password,f_idnumber
    </sql>

    <select id="selectById" parameterType="Integer" resultMap="userMap">
        SELECT
        <include refid="FIELDS" />
        FROM tc_sys_user
        WHERE f_id = #{f_id}
        LIMIT 1
    </select>

    <select id="selectByUsername" parameterType="String" resultMap="userMap">
        SELECT
        <include refid="FIELDS" />
        FROM tc_sys_user
        WHERE f_name = #{f_name}
        LIMIT 1
    </select>

    <select id="selectAll" resultMap="userMap">
        SELECT
        <include refid="FIELDS" />
        FROM tc_sys_user
    </select>
</mapper>
  • 增加mybatis-config.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

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

    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer"/>
        <typeAlias alias="Long" type="java.lang.Long"/>
        <typeAlias alias="HashMap" type="java.util.HashMap"/>
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
        <typeAlias alias="ArrayList" type="java.util.ArrayList"/>
        <typeAlias alias="LinkedList" type="java.util.LinkedList"/>
    </typeAliases>

</configuration>

在这里插入图片描述

5.3. 增加接口访问

在这里插入图片描述

package com.xiaocai.controller;

import com.xiaocai.entity.User;
import com.xiaocai.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/User")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("selectById")
    public User selectById(Integer f_id){
        return userService.selectById(f_id);
    }

    @GetMapping("selectByUsername")
    public User selectByUsername(String f_name){
        return userService.selectByUsername(f_name);
    }

    @GetMapping("selectAll")
    public List<User> selectAll(){
        List<User>  users = userService.selectAll();
        return users;
    }
}
package com.xiaocai.service;
import com.xiaocai.entity.User;

import java.util.List;

public interface UserService {

    User selectById(Integer f_id);

    User selectByUsername(String f_name);

    List<User> selectAll();
}
package com.xiaocai.service.Impl;

import com.xiaocai.entity.User;
import com.xiaocai.mapper.UserMapper;
import com.xiaocai.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    //调用UserMapper查询数据
    //@Resource或者@Autowired注解都可
    @Resource
    @Autowired
    private UserMapper userMapper;

    @Override
    public User selectById(Integer f_id) {
        return userMapper.selectById(f_id);
    }

    @Override
    public User selectByUsername(String f_name) {
        return userMapper.selectByUsername(f_name);
    }

    @Override
    public List<User> selectAll() {
        List<User>  users = userMapper.selectAll();
        return users;
    }
}

现在最后需要转过头去修改之前的一些文件,之所以在之前没有增加,是因为思维逻辑是这样过来的,之前加了是经验,现在加是推理

  • 扫描内容

@MapperScan("com.xiaocai.mapper")

package com.xiaocai;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Hello world!
 */
@SpringBootApplication
@MapperScan("com.xiaocai.mapper")
@RestController
public class App {

    @RequestMapping("/")
    public String home() {
        return "小菜不帅吗?";
    }

    public static void main(String[] args) {
        System.out.println("Hello World!");
        SpringApplication.run(App.class, args);
    }
}

  • mybatis 配置内容
# mybatis 配置内容
mybatis:
  config-location: classpath:mybatis-config.xml  # 配置 MyBatis 配置文件路径
  mapper-locations: classpath:mapper/*.xml  # 配置 Mapper XML 地址
  type-aliases-package: com.xiaocai.entity # 配置数据库实体包路径
server:
  port: 8080

spring:
  application:
    name: jgdf-template
    version: v1.0-beta
  datasource:
    name: systemManager
    url: jdbc:postgresql://10.1.100.153:5432/clp
    username: clp
    password: clp
    driver-class-name: org.postgresql.Driver
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

# mybatis 配置内容
mybatis:
  config-location: classpath:mybatis-config.xml  # 配置 MyBatis 配置文件路径
  mapper-locations: classpath:mapper/*.xml  # 配置 Mapper XML 地址
  type-aliases-package: com.xiaocai.entity # 配置数据库实体包路径


  logging:
    level:
      cn.piesat: debug
    file: ./logs/Spring.log


在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐