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

网友投稿 323 2023-01-02

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 + '\http://'' +

'}';

}

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() {

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

select id, user, name, age, password from user

定义完之后,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 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.factorRUAPVKy.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> objComResponse = new ComResponse<>();

List userList = userService.getList();

objComResponse.setData(userList);

objComResponse.setMsg("返回成功")

return objComResponse;

}

}

公共类:

commonResponse -> ComResponse

package com.lxc.springboot.commonResponse;

/**

*

* @param

* ComResponse 是一个泛型类,返回的是一个泛型,外界可以传入任何类型的值

* 理解泛型:

* 有点像js方法,你给它传任何类型都可以,但是最后返回的类型是setData时候传的对象!!!

*/

public class ComResponse {

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;

}

}

第七步

启动项目测试:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:我的快递物流查询单号(我的快递物流查询单号怎么查)
下一篇:数据网站api接口(网站的api接口)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~