idea,spring boot+MySQL+MyBatis项目创建并在网页中显示数据库表中内容

前言:这里是我对于前后端spring boot + vue3的学习过程收纳整理以及知识分享。

目录

一、springboot框架搭建

1.新建spring boot项目

2.添加必要依赖项

二、配置数据库路径

1.数据库建表填数据

2.IDEA配置数据库

三、测试数据库是否连接成功:

四、将数据库中的内容输出到页面

1.目录结构更改

2.添加代码

3.测试输出

五、目录结构及调用过程解释

1.方法调用过程

2.路径问题

3.总结


一、springboot框架搭建

1.新建spring boot项目

打开IDEA,新建一个项目:

选择spring initalizr,设置项目存储位置,JDK选17,项目名称可以自行更改,类型选择Maven:

2.添加必要依赖项

版本按照默认,添加依赖项web->spring web:

在sql中添加依赖项MySQL Driver和MyBatis Framework:

点击create进行创建,创建后点开项目,等待各种依赖项、文件自动下载完毕

目录结构为:

二、配置数据库路径

1.数据库建表填数据

打开MySQL或者Navicat,创建新的数据库及表,并向表内增添用于测试的数据。

示例:

创建数据库schema为db,并创建user表:

其中user表包含属性:用户ID(id),用户名(username),年龄(age),职业(job),爱好(hobby)

-- 建数据库
create schema db;
use db;

-- 建表
create table user(
  id int primary key,
  username varchar(20),
  age int,
  job varchar(100),
  hobby varchar(100));

-- 插入数据
insert into user
values(1,'张三',30,'前端开发工程师','睡觉');
insert into user
values(2,'李四',25,'产品助理','打篮球');
insert into user
values(3,'王五',40,'后端开发工程师','旅行');

-- 查看数据
select * from user;

插入数据成功后:

2.IDEA配置数据库

在application.properties文件中,配置数据库,其中url中的db为数据库名称:

server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

对于端口号,一般写成8080,如果端口号已经被其他进程占用,可以改成8081等等,数据库名称,其他配置,用户名和密码,以及要连接的数据库名称,需要根据自己的情况更改:

此时,点击绿色小三角运行,在浏览器输入http://localhost:8080(设置的端口号),出现如下页面:

三、测试数据库是否连接成功:

在test中:

更改Java类的内容

DemoApplicationTests:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    DataSource dataSource;

    @Test
    void contextLoads() throws Exception{
        System.out.println("获取的数据库链接为:"+dataSource.getConnection());
    }

}

 右击运行DemoApplicationTests.java:

出现红框内容即连接成功:

四、将数据库中的内容输出到页面

要实现在网页中展示表中数据

1.目录结构更改

在java中创建如下五个包:

其中,controller用于编写方法类,entity用于储存实体类,service中存放接口,mapper中用于衔接数据库,result用于统一规范输出结果形式

在每个package包中分别创建如下Java类:

(mapper下的UserMapper前方黑色小鸟图标是因为我在file->settings->plugins中添加了MyBatisX插件,便于将xxMapper.xml文件下的sql语句与xxMapper.java中的方法对应起来,可以不添加)如果要添加的话是下面这里:

在resources中创建如下结构,.xml文件中用于书写mysql语句:

最终目录结构:

2.添加代码

每个文件代码:

User.java:

package com.example.demo.entity;

public class User {
    private int id;
    private String username;
    private int age;
    private String job;
    private String hobby;

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

    public int getId() {
        return id;
    }

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

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

    public int getAge() {
        return age;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public String getJob() {
        return job;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getHobby() {
        return hobby;
    }
}

UserController.java:

package com.example.demo.controller;

import com.example.demo.result.Result;
import com.example.demo.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    UserService userService;

    @CrossOrigin
    @GetMapping(value = "/findAll")
    @ResponseBody
    public Result findAllUser(){
        try {
            return Result.success(userService.findAllUser());
        }catch (Exception e){
            return Result.failure(500,"服务器异常");
        }

    }

}

UserMapper.java:

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
public interface UserMapper {
    public List<User> findAllUser();//查找所有用户
}

UserService.java:

package com.example.demo.service;

import com.example.demo.entity.User;
import org.springframework.stereotype.Service;

import java.util.List;

public interface UserService {
    public List<User> findAllUser();
}

UserServiceImpl.java:

package com.example.demo.service;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;
    @Override
    public List<User> findAllUser(){
        return userMapper.findAllUser();
    }

}

Result.java:

package com.example.demo.result;

public class Result {
    private int code; //接口状态码
    private String msg; //接口返回消息2、User.java
    private Object data; //响应内容

    public Result(){
        super();
    }
    public Result(int code,String msg,Object data){
        this.code=code;
        this.msg=msg;
        this.data=data;
    }
    public static Result success(Object data){
        Result item=new Result(200,"success",data);
        return item;
    }
    public static Result failure(int errCode,String errorMessage){
        Result item=new Result(errCode,errorMessage,null);
        return item;
    }
    public int getCode(){
        return code;
    }
    public void setCode(int code){
        this.code=code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

UserMapper.xml:

<?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.example.demo.mapper.UserMapper" >
    <resultMap id="result" type="com.example.demo.entity.User">
        <result property="id" column="id" />
        <result property="username" column="username" />
        <result property="age" column="age" />
        <result property="job" column="job" />
        <result property="hobby" column="hobby"/>
    </resultMap>

    <!--    查找所有用户-->
    <select id="findAllUser" resultMap="result">
        select * from  user
    </select>

</mapper>

还需要在application.properties中设置文件路径:

#mybatis配置
mybatis.typeAliasesPackage=org.spring.springboot.domain
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package= com.example.demo.entity

3.测试输出

先在右上角的configuration中选择Demo1Application(前面有绿色图标的),然后点击绿色小三角运行程序:

控制台:

此时在浏览器中输入http://localhost:8080/user/findALL

五、目录结构及调用过程解释

以下内容按我的理解来解释整个过程,比较口语化,也可能不太专业,如有不当敬请指出

1.方法调用过程

刚才已经粗略解释过一部分:controller用于编写方法类,entity用于储存实体类,service中存放接口,mapper中用于衔接数据库,result用于统一规范输出结果形式

要知道它的执行过程需要一步一步来,一层一层看,先看的是controller里面的注解

1)controller中,对整个UserController类使用了RequestMapping注解,findAllUser()函数之上对应的注解GetMapping:/findALL,所以,findAllUser注解可以视为/user/findAll

浏览器输入链接http://localhost:8080/user/findALL时,启用8080端口,/user/findALL的请求会由findAllUser()来处理

该函数内部有一条语句:userService.findAllUser(),调用了service包下UserService.java里面的findAllUser()函数

2)再来看service文件,这里定义了UserService接口,接口中没有定义具体的实现方法体:

里面正是findAllUser()函数被调用,这个函数返回值为list形式的user对象集合,无需输入

3)接下来就是到了UserServiceImpl了,UserServiceImpl为UserService的接口实现类,定义了findAllUser()的具体方法体:

到这里算是java方法和mysql语句衔接的一个重要转折点啦,在UserServiceImpl中,调用了UserMapper.java中的findAllUser()方法

4)具体UserMapper.java:

也拥有findAllUser(),这里的函数名字不是随便起的,一切的根源都在resources->mapper->UserMapper.xml中:

4)这里mysql语句中,设置的id为:findAllUser

UserMapper.java中的对应方法名和UserMapper.xml中mysql语句id的命名要完全一致(包括大小写)

比如:

.xml文件替换为(id更换为getListUser):

<select id="getListUser" resultMap="result">
    select * from  user
</select>

那么UserMapper.java中对应方法就换为(方法名更换为getListUser):

public List<User> getListUser();//查找所有用户

而其他包中java类为了协调一致不搞混,也同样用getListUser命名对应函数

2.路径问题

那么UserMapper.java中的函数又是怎么找到UserMapper.xml文件中对应的id呢?这就是路径配置问题了

在resources->mapper->UserMapper.xml中,

namespace="com.example.demo.mapper.UserMapper" 

这一句指明了.xml文件对应的.java文件路径,是在src->main->java->com.example.demo.mapper->UserMapper.java

再加上application.properties中针对mybatis路径配置:

mybatis.mapper-locations=classpath:mapper/*.xml

指明访问.xml文件的路径为resources->mapper->*.xml

如果没有这些设置的话,是找不到数据库表信息的。

3.总结

简单来说整体流程大致为:

方法请求->controller注解->service接口->service实现接口(具体方法实现)->mapper包中的**Mapper.java->根据路径配置找到resources中的**Mapper.xml->实现具体sql语句,获得返回值->将返回值再倒着传递出去

可以视为:

controller、service包中的内容都是与java后端方法调用有关的,

而mapper包中,不管是src->main->java->mapper下的.java文件,还是resources->***下的.xml文件,都是与数据库调用有关的

  • 20
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值