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.sql.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知道,m
apper⽂件夹就是数据持久层接⼝,所以,在项⽬⼊⼝⽂件中还要使⽤@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是这个项⽬的持久层spring启动流程面试回答
public class BootAndVueProjectApplication {
private static final Logger LOG = Logger(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("地址:\t127.0.0.1:{}", Property("server.port"));
}
}
然后,创建UserMapper接⼝的 sql映射⽂件l,通常我会把这个⽂件放在resources -> mapper⽂件夹中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/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 -> l是⼀个sql映射⽂件呢,此时需要在resources -> application.properties 中去配置:
# 配置mybatis所有的l所在的路径
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() {
UserList();
}
}
第六步
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.ller;
import com.lxc.springbootmonResponse.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 = List();
objComResponse.setData(userList);
objComResponse.setMsg("返回成功")
return objComResponse;
}
}
公共类:
commonResponse -> ComResponse
package com.lxc.springbootmonResponse;
/**
*
* @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) {
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
第七步
启动项⽬测试:
到此这篇关于Springboot连接数据库及查询数据完整流程的⽂章就介绍到这了,更多相关Springboot连接数据库内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。