这个项目是之间参考https://www.jianshu.com/p/ca185e2b19fe这个项目写的,并且做了对应的修改和详细讲解过程。
我用的是idea2020 和mysql(Navicat),所以会相对来说有一点点差别。
接下来开始正式开始:
1.创建项目:
在idea2020版本上,可以直接选择Spring Initializr
在这里插入图片描述
然后写好自己的项目名称和位置
并在之后的Dependencies上选好web->Spirng Web和SQL-Mybatis Framework ,MySQL Driver(可能不一定是必须的,但是个人感觉选了比较好)
在这里插入图片描述
在这里插入图片描述
这样就可以生成好了。

接着是设置先决条件
我上面给的网站是一个很简单的项目,但是在代码不改变的前提之下,稍微对项目的格式做了一丢丢的优化,让他看上去更顺眼一点(当然也可以不优化)
所以在src项目下面:创建以下文件
(com.example.springboot_nstart)是我自己创建的包名,大家都是可以不一样的,重点是下面四个文件夹。
在这里插入图片描述
这几个包在spring中的含义各有不同,pojo是代表一些具体的类,controller用来和前端进行联系,mapper是用来操作数据库,而service是优化作用的
Mapper层,controller层,service层,pojo层的区别联系
连接数据库
在自己确保已经安装和能启动数据库的前提之下:
尝试用idea连接一下数据库
在idea的右边(默认是右边吧)找到datebase
在这里插入图片描述
点击之后,按+ 到DataSource找到mysql进入
在这里插入图片描述
在这里插入图片描述
根据自己的mysql账号密码输入(这里端口默认是3306的,你的端口也可能是其他的)
如果出现一些错误,可能可以通过我这篇博客解决:https://blog.csdn.net/qq_41115379/article/details/109826287
在这里插入图片描述
这样出现绿钩就是连接好了。
这些先决条件都不是必要的,但是如果你能把这些条件都弄好的前提之下,会在之后的编写代码环节避免很多错误的发生。

2.数据库操作
首先在resources文件夹下的 application.properties中写入对应连接数据库的代码:

spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testMysql?setUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=admin

注意以下几点:

1.第一行的com.mysql.cj是因为我的mysql版本是8的,如果是之前的版本,我不确定这样会不会报错,如果会的话,去掉中间的cj,直接用
com.mysql.jdbc应该就行了
2.对应的 3306的端口和root的username和admin的password都是需要结合直接的mysql来写的
3.这里后面的testMysql是我会在后面提到的需要创建的数据库

确保写好之后,就可以运行 java文件夹下的那个application代码了,
在http://localhost:8080的网站中出现错误提示的页面Whitelabel Error Page,就对了(没错,是会出现error page的)

再是创建对应的数据库,和那个网站一样,我创建了一个testMysql的datebase,创建方法可以是:

1.在命令行的mysql命令下写入:

sql create database testMysql
并且可以通过 show databases来确定是否建成
2.在连接好了navicat之后,直接在可视化界面创建(右键->新建数据库)
可以断开连接重连之后看是否建成

3.代码测试连接前端操作
从这边开始测试前端是否能生成:
首先在controller的文件夹下面创建一个 UserController
在这里插入图片描述
在里面写入对应代码:

@RestController
public class UserController {

    @RequestMapping("/getuserlist")
    public String getUserList()
    {
      return "获取成功!";
    }

}

稍微凭借我知道的一点点知识点解释一下:(不想看的可以直接跳过
这里是用到了java的spring注解:

第一个注解是RestController,不像是平时的Controller是因为他返回的是一个字符串,而不是一个jsp或者html
的文件如果是需要返回当前界面东西的话,是需要加一个responsebody的限制,而RestController就相当于是controller和responsebody的结合:@Controller和@RestController的区别?
第二个注解是 RequestMapping,这是一个用来表示地址映射的注解,也就是输入到对应的前端界面上去。

写好之后,再运行一次java文件夹下的application,到http://localhost:8080/getuserlist界面,就会有**获取成功!**的消息弹出来。

4.代码的书写-添加查找功能:
首先在pojo包中创建一个User类
pojo(plain ordinaty java object)
在这里插入图片描述
写入对应代码,并写入对应的Set和get函数(一般就是右键 generate-GetterandSetter)package也需要改一下

package com.example.springboot_nstart.pojo;

public class User {
    //有四个属性
    public String username;
    public String userpassword;
    public int age;
    public String sex;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpassword() {
        return userpassword;
    }

    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }


然后是再mapper文件夹下创建UserMapper(注意是接口)
在这里插入图片描述
再里面写一个查询数据库的内容,并且返回User类型的数据

package com.example.springboot_nstart.mapper;

import com.example.springboot_nstart.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public interface UserMapper {
    //然后做一些数据库的对应操作,这次是查询操作
    @Select("select * from usertable order by user_id")
    List<User> getUserList();

}

这里也稍微解释一下(不看的可以跳过

1.componet注解,在我看来就是标记为他是一个可以被自动检测的候选,也就是检测出是否可以被自动注入,和之后提到的注解有联系
componet注解的含义
2.select注解也就是 一个sql语句,学过数据库应该都知道

这里testMysql里创建一个表(这次就不通过命令行创建了,直接在Navicat里创建),需要注意的是,我这边没有把user_id设置为自增长,所以产生了一些错误,所以按照原博客,就设置成自增长的,就行了。省的和我一样,还需要进行一些修改
在这里插入图片描述
并在其中手动添加两组数据
在这里插入图片描述
(随便写的,不要在意这些细节)

再回到项目,在service下创建一个UserService 和创建一个文件夹,impl里创建UserServiceImpl
UserService:

package com.example.springboot_nstart.service;

import com.example.springboot_nstart.pojo.User;
import org.springframework.stereotype.Service;

import java.util.List;
//也是没有写对应的注解的,到时候可以改一下
@Service
public interface UserService {
    //和mapper相呼应,有一个对应的方法
    List<User> getUserList();

}

UserServiceImpl:

package com.example.springboot_nstart.service.impl;

import com.example.springboot_nstart.mapper.UserMapper;
import com.example.springboot_nstart.pojo.User;
import com.example.springboot_nstart.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import java.util.List;
//再网上看到 好像是 service和controller和compent 还有这个 都是没有本质区别的
@Repository
public class UserServiceImpl implements UserService {
    //这里就是需要把这个实现方法具体的写出来了,然后这里就需要加入注解了
    //这就是所谓的自动装配的功能吧
    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> getUserList() {
              //就是因为这些调用来调用去的,让我觉得很绕,我姑且认为是,需要提高系统的可调度性
            //所以要做各种分层的操作,减少耦合度,这里的话,相当于就是要用具体操作了,可是其实就是把mapper的方法调用一些
        try{
            List<User> users= userMapper.getUserList();
            return users;

        }catch (Exception e){
            //好像是 如果不throw的话,会报错。。。
            e.printStackTrace();
            throw e;
        }
    }

}

稍微解释一下:
首先是对于service层的理解,我姑且认为是因为现在这个项目的属性较少,耦合度较低,所以service层的作用显得不那么重要,甚至是可有可无的,但是当pojo里的属性增多时,他的作用应该就起来了:
service层的作用

service层的意义
repository注解,其实就是和component的含义相同,只不过是在不同层级上设置的。
Autowired的注解,它可以对类成员变量,方法以及构造函数进行标注,让spring完成bean自动标注。autowired的作用

最后,再把UserController中进行修改,导入UserServiceIml

@Autowired
    private UserServerimpl userServer;
    
    @RequestMapping("/getuserlist")
    public List<User> getUserList()
    {
      return userServer.getUserList();
    }

最后在java下的application进行对应的MapperScan导入:
在这里插入图片描述
在这里插入图片描述
这个MapperScan里的包是需要按照你自己写的包进行对应的修改的。

最后运行这个application,并到http://localhost:8080/getuserlist界面,就会有以下效果:
在这里插入图片描述
第一个小项目over

之后第二篇博客还有增加了 数据库新增功能,大家可以继续观看:下一篇博客地址

Logo

更多推荐