或许直接叫他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.写好我们控制类,在我们的方法集合里面选择要使用的方法
层层相扣,而我们用户使用的就恰恰相反,在我们的控制类里面选择所有的方法集合里面的要调用方法,然后自顶向下去推。其他的配置那一块,基本都有文件和数据给我们了,问题不是很大。