Spring Boot 具有 Spring 一切优秀特性去除了大量的 XML 配置文件,简化了复杂的依赖管理,简化 Spring 应用的搭建和开发过程。那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连接数据库以及查询数据的相关过程,有兴趣的小伙伴可以自己尝试一下哦!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: