Springboot连接数据库及查询数据完整流程

Springboot连接数据库

第一步

springboot继承Mybatis及数据库连接依赖(上一篇文章已经记录 )

第二步

resources -> application.properties
application.properties中增加数据库连接配置

# 增加数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=lvxingchen
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

第三步

domain -> User
创建实体类,属性要跟数据库表字段一致

package com.lxc.springboot.domain;

public class User {
    private int id;
    private String user;
    private String name;
    private int age;
    private String password;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", user='" + user + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", password='" + password + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

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

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getPassword() {
        return password;
    }

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

第四步

mapper -> UserMapper
创建UserMapper接口,这也是项目的持久层,与数据查询相关的,之后我们需要让sprongboot知道,mapper文件夹就是数据持久层接口,所以,在项目入口文件中还要使用@MapperScan注解定义持久层。

package com.lxc.springboot.mapper;

import com.lxc.springboot.domain.User;

import java.util.List;

public interface UserMapper {
    public List<User> getUserList();
}

在项目入口文件中的配置:

@ComponentScan("com.lxc.springboot")
@SpringBootApplication
@MapperScan("com.lxc.springboot.mapper") // 让springboot知道mapper是这个项目的持久层
public class BootAndVueProjectApplication {
    private static final Logger LOG = LoggerFactory.getLogger(BootAndVueProjectApplication.class);
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(BootAndVueProjectApplication.class);
        //  SpringApplication.run(BootAndVueProjectApplication.class, args);
        Environment env = app.run(args).getEnvironment();
        LOG.info("启动成功!");
        LOG.info("地址:\thttp://127.0.0.1:{}", env.getProperty("server.port"));
    }
}

然后,创建UserMapper接口的 sql映射文件userMapper.xml,通常我会把这个文件放在resources -> mapper文件夹中

<?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" >

<!--接口-->
<!--
namespace:对应接口的全路径;
id:对应接口的方法;
resultType:结果类型。
-->
<mapper namespace="com.lxc.springboot.mapper.UserMapper" >
    <select id="getUserList" resultType="com.lxc.springboot.domain.User">
        select id, user, name, age, password from user
    </select>

</mapper>

定义完之后,springboot怎么能知道 resources -> mapper -> userMapper.xml是一个sql映射文件呢,此时需要在resources -> application.properties 中去配置:

# 配置mybatis所有的Mapper.xml所在的路径
mybatis.mapper-locations=classpath:/mapper/**/*.xml

第五步

service -> UserService
接口定义完,我们来创建service服务层,所有的业务逻辑的处理在这一层实现,也负责调用持久层接口。

package com.lxc.springboot.service;

import com.lxc.springboot.domain.User;
import com.lxc.springboot.mapper.UserMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
/**
 * service层调用持久层
 * @Service // 让spring扫描到这个包
 *
 * @Autowired和@Resource
 * 两个注解都可以把一个类注入进来(相当于import)
 * Resource JDK自带的
 * Autowired spring自带的
 */
@Service // 让spring扫描到这个包
public class UserService {
    @Resource
    public UserMapper userMapper;
    public List<User> getList() {
        return userMapper.getUserList();
    }
}

第六步

controller-> TestController

既然服务都写完了,也查询到数据了,那么来定义一个控制层Controller,负责调用service层,编写前端api接口,这一层也算是一个中转层。

这里着重记录下 ComResponse这个类,restful接口在返回给前端JSON数据时,同时也会返回一些公共的数据,如:状态码(code)、响应信息(message)等等,在这里我们统一处理,编写一个公共类,里边有这些公共字段属性,同时还需要有一个data数据属性,类型一般是:List , 之所以要把公共类定义为泛型,因为,在setData的时候,类型不确定,所以需要定义为泛型, 返回给前端的格式如下:

{
        code: 200,
        message: "查询成功",
        data: [{ name:"lxc", age: 20 }, { name: "123", age: 100 }]
}

package com.lxc.springboot.controller;

import com.lxc.springboot.commonResponse.ComResponse;
import com.lxc.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController // 通常返回一个json或 字符串
//@Controller // 一般是返回一个页面
public class TestController {

    @Resource // 把service层userService注入进来
    private UserService userService; 

    // 调用service层
    @RequestMapping(value = "/service")
    public ComResponse getService() {
        ComResponse<List<User>> objComResponse = new ComResponse<>();
        List<User> userList = userService.getList();
        objComResponse.setData(userList);
        objComResponse.setMsg("返回成功")
        return objComResponse;
    }
}

公共类:
commonResponse -> ComResponse

package com.lxc.springboot.commonResponse;
/**
 *
 * @param <T>
 *     ComResponse 是一个泛型类,返回的是一个泛型,外界可以传入任何类型的值
 *     理解泛型:
 *     有点像js方法,你给它传任何类型都可以,但是最后返回的类型是setData时候传的对象!!!
 */
public class ComResponse<T> {

    private String msg = "返回成功";
    private int code = 200;
    private T data;

    public String getMsg() {
        return msg;
    }

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

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

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

第七步

启动项目测试:

到此这篇关于Springboot连接数据库及查询数据完整流程的文章就介绍到这了,更多相关Springboot连接数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何在SpringBoot 中使用 Druid 数据库连接池

    Druid是阿里开源的一款数据库连接池,除了常规的连接池功能外,它还提供了强大的监控和扩展功能.这对没有做数据库监控的小项目有很大的吸引力. 下列步骤可以让你无脑式的在SpringBoot2.x中使用Druid. 1.Maven中的pom文件 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</ve

  • 解决Springboot项目启动后自动创建多表关联的数据库与表的方案

    熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励! 在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表. 若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据库表,如mybatis plus.spring JPA等,但您是否有想过,若要自行构建一套更为复杂的表结构时,这种开源框架是否也能满足呢,若满足不了话,又该如何才能实现呢? 我在前面写过一篇 Activiti工作流学习笔记(

  • Spring\SpringBoot配置连接数据库的方法

    Spring配置连接数据库 设置jdbc.properties jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/SSM jdbc.username=root jdbc.password=root 创建配置类 /** * @Author: Promsing * @Date: 2021/5/30 - 14:52 * @Description:连接数据库的配置类 * @version: 1.

  • SpringBoot是如何使用SQL数据库的?

    1.配置数据源 Java 的javax.sql.DataSource接口提供了处理数据库连接的标准方法. 1.1.嵌入式数据库支持 使用内存中的嵌入式数据库开发应用程序通常很方便.显然,内存数据库不提供持久存储.您需要在应用程序启动时填充数据库,并准备在应用程序结束时丢弃数据. Spring Boot 可以自动配置嵌入式H2.HSQL和Derby数据库.您无需提供任何连接 URL.您只需要包含对要使用的嵌入式数据库的构建依赖项.如果类路径上有多个嵌入式数据库,设置spring.datasourc

  • 关于SpringBoot mysql数据库时区问题

    寻找原因 后端开发中常见的几个时区设置 第一个设置点配置文件   spring.jackson.time-zone 第二个设置点 高版本SpringBoot版本 mysql-connector-java 用的是8.X,mysql8.X的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空. 第三个设置点 mysql  time_zone变量 词义 serverTimezone临时指定mysql服务器的时区 spring.jackson.time-zone  设置spri

  • Springboot连接数据库及查询数据完整流程

    Springboot连接数据库 第一步 springboot继承Mybatis及数据库连接依赖(上一篇文章已经记录 ) 第二步 resources -> application.properties application.properties中增加数据库连接配置 # 增加数据库连接 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?serverTimezone=Asia/Shanghai&useUnicode=true&

  • springboot对接微信支付的完整流程(附前后端代码)

    展示图: 对接的完整流程如下 首先是配置 gzh.appid=公众号appid wxPay.mchId=商户号 wxPay.key=支付密钥 wxPay.notifyUrl=域名回调地址 常量: /**微信支付统一下单接口*/ public static final String unifiedOrderUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"; public static String SUCCESSxml = &q

  • Springboot 手动分页查询分批批量插入数据的实现流程

    目录 前言 业务场景是什么? 正文 前言 业务场景是什么? 就是数据库的一批数据,量不少,需要执行同步插入到别的地方. 简单点肯定是一次性查出来,然后循环一个个插入,完事. 考虑点: ① 数据量大,一次性查出来操作,很爆炸. ② 循环里面一次一次地去插入,如果非业务场景必要,基本是不会在循环里面使用sql操作的. 所以该篇作为抛砖引玉(还有很多需要考虑的点),给出一种解决上面场景的代码编写方案, 手动分页,查询后批量插入. 正文 实现的流程简图: 看看最终实现的效果,通过代码日志记录了这个实现后

  • Mybatis实现查询相册数据列表流程讲解

    目录 1.书写执行的SQL语句 2.在项目的根包下创建pojo.vo.AlbumListItemVO类 3.在AlbumMapper.java中添加抽象方法 4.在AlbumMapper.xml中配置SQL语句 5.在AlbumMapperTests.java中编写并执行测试 1.书写执行的SQL语句 需要执行的SQL语句大致是: SELECT xx,xx FROM pms_album ORDER BY sort DESC, id DESC 注意:如果查询结果的数量可能超过1条,在查询的SQL语

  • SpringBoot DataSource数据源实现自动配置流程详解

    目录 一.重点概念 1.什么是DataSource数据源 2.数据库连接池 二.导入依赖 三.分析自动配置 1.DataSourceAutoConfiguration类 2.DataSourceTransactionManagerAutoConfiguration类 3.JdbcTemplateAutoConfiguration类 4.JndiDataSourceAutoConfiguration类 5.XADataSourceAutoConfiguration类 四.代码样例 一.重点概念 1

  • ASP.NET连接数据库并获取数据方法总结

    本文实例讲述了ASP.NET连接数据库并获取数据方法.分享给大家供大家参考,具体如下: *连接对象的用法SqlConnection,SqlCommand,SqlDataAdapter *数据访问方式的写法 1.获取数据: //引用这两个命名空间 using System.Data.SqlClient; using System.Data; // 初始化连接对象 SqlConnection conn = new SqlConnection(); conn.ConnectionString = "U

  • springboot2.2 集成 activity6实现请假完整流程示例详解

    新手学习记录.写在springboot test 示例  示例代码地址看结尾.后面有带页面的示例. SpringBoot Test无页面简单示例 员工请假流程 员工发起申请,附带请假信息(请假几天) 单位领导审批,如果通过,交付经理审批,不通过,重新申请 经理审批,如果请假天数不超过三天,经理1审批 如果请假天数在3-5天,经理3审批 超过5天,经理2审批 经理审批通过,流程结束,经理审批不通过,员工重新申请 流程图 代码 activiti.cfg.xml为必须文件且数据库连接正确,否则Proc

  • SpringBoot中Mybatis + Druid 数据访问的详细过程

    目录 1.简介 2.JDBC 3.CRUD操作 4.自定义数据源 DruidDataSource 1.配置 Druid 数据源监控 2.配置 Druid web 监控 filter 5.SpringBoot 整合mybatis 1. 导入mybatis所需要的依赖 2.配置数据库连接信息 3,创建实体类 4.配置Mapper接口类 6.SpringBoot 整合 1.简介 ​ 对于数据访问层,无论是SQL(关系型数据库) 还是NOSQL(非关系型数据库),SpringBoot 底层都是采用 Sp

  • springboot与数据库返回数据中文乱码

    问题描述:使用springboot操作数据库时,返回的中文数据一直是乱码 刚开始以为是springboot的问题,一直在网上搜索springboot返回数据是乱码结果我的问题压根对不上边,怎么都解决不好 后面发现应该是mysql数据库的问题,于是上网搜索,最后判断是字符集的问题 解决流程:先使用sql语句查看数据库的字符集 show variables like 'character%'; 发现多处地方都不是utf8,想要修改的话要对mysql配置文件修改,网上很多修改都是使用命令修改,但是这种

  • SpringBoot中web模版数据渲染展示的案例详解

    在第一节我们演示通过接口返回数据,数据没有渲染展示在页面上 .在这里我们演示一下从后台返回数据渲 染到前端页面的项目案例. 模板引擎 SpringBoot是通过模版引擎进行页面结果渲染的,官方提供预设配置的模版引擎主要有 Thymeleaf FreeMarker Velocity Groovy Mustache 我们在这里演示使用Thymeleaf和FreeMarker模板引擎. Thymeleaf Thymeleaf是适用于 Web 和独立环境的现代服务器端 Java 模板引擎. Thymel

随机推荐