小唐开始学 Spring Boot——(3)利用mybatis访问数据表

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 小唐开始学 Spring Boot——(3)利用mybatis访问数据表

或许直接叫他Spring Boot连数据库会更好啊哈哈哈哈哈哈

一、过程

创建新项目

因为我们这一次要使用sql,所以重新创建一个项目吧,这次唯一不同的是,我们要额外选择几个依赖

创建数据表

在里面随便添加一个数据就可以啦

创建返回结构

因为我们mysql放回结构是一个list,所以我们需要定义一个新的属性来对这些值进行承接,并且属性和字段要相同,同时具备set和get方法

查询函数

这里面的Test1就是我们之前写好的结构

这里注意我们使用的是映射的方法,通过在.src/main/resources/mapper目录下创建一个xml文件,来作为我们方法的实现

方法集成

因为我们到时候写Spring boot不可能只有一种函数,所以我们需要有一个类来对其进行一个集成,到时候我们通过网站访问的时候直接访问这个集成类就可以了

访问网站

和之前一样,我们需要一个网址来访问我们的网站,来访问我们的网站,在这里我们去调用我们集成中的方法即可

配置数据库

我们同时还需要在我们全局里面配置相应属性,数据库的时区,驱动配置,以及账号密码,还有我们的需要引用的xml文件

成功

二、项目代码

项目结构

Testlist.java

package com.example.test.controller;
import com.example.test.domain.Test1;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.test.service.TestService;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class Testlist {
    @Resource
    private TestService testService;
    @GetMapping("/list")
    public List<Test1> testlistall()
    {
        return testService.list();
    }
}

Test1.java

package com.example.test.domain;
public class Test1 {
    private Integer id;
    private String name;
    private  String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "Test1{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

TestMapper.java

package com.example.test.mapper;
import com.example.test.domain.Test1;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface TestMapper {
    public List<Test1> findall();
}

TestService.java

package com.example.test.service;
import com.example.test.domain.Test1;
import com.example.test.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TestService {
    @Autowired
    private TestMapper testMapper;
    public List<Test1> list(){
        return testMapper.findall();
    }
}

testmapper.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.test.mapper.TestMapper" >
    <select id="findall" resultType="com.example.test.domain.Test1">
        select `id`, `name`, `password` from `account`
    </select>
</mapper>

application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:/mapper/**/*.xml

三、常见错误

数据库连接失败

1.配置问题

如果我们右边框框的数据库连接成功,但是运行的时候显示连接错误,请检查spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?........

spring有没有改成我们自己的数据库,以及端口号是否正确

2. 驱动版本问题

可能有一些宝的my sql版本比较低,对于太新的驱动不适应

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary

在mysql5中jdbc的驱动是

com.mysql.jdbc.Driver

而mysql6以及以上是

com.mysql.cj.jdbc.Driver

3.时区配置错误,请重新复制时区

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/你的数据库名?characterEncoding=UTF8&autoReconnect=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true

4.xml配置错误

四、总结

相对来说,只要我们搞懂里面的逻辑就不是很难了,基本就是这几步

1.写好相关表的结构(方便后续放回值)
2.写我们要实现的方法(这里注意我们是采用xml来实现的)
3.将我们写好的方法添加到所有的方法集合里面(方便后续调用)
4.写好我们控制类,在我们的方法集合里面选择要使用的方法

层层相扣,而我们用户使用的就恰恰相反,在我们的控制类里面选择所有的方法集合里面的要调用方法,然后自顶向下去推。其他的配置那一块,基本都有文件和数据给我们了,问题不是很大。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
Java 数据库连接 数据库
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
|
11天前
|
Java 数据库连接 Maven
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
|
12天前
|
Java 数据库连接 mybatis
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
SpringBoot配置Mybatis注意事项,mappers层下的name命名空间,要落实到Dao的video类,resultType要落到bean,配置好mybatis的对应依赖。
|
21天前
|
Java 数据库连接 数据库
Springboot整合mybatis注解版(202005)
Springboot整合mybatis注解版(202005)
20 3
|
21天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
26 2
|
20天前
|
数据库
MyBatis-Plus如何自动填充数据表的创建时间和更新时间
MyBatis-Plus如何自动填充数据表的创建时间和更新时间
35 1
|
21天前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
24 1
|
21天前
|
Java 程序员
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
浅浅纪念花一个月完成Springboot+Mybatis+Springmvc+Vue2+elementUI的前后端交互入门项目
26 1
|
10天前
|
数据库
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
|
17天前
|
XML Java 数据库连接