(无论是eclipse还是idea等能开发Springboot框架的软件,其创建的Spring Web的目录结构都一样,因此我不放项目结构,后面直接说文件夹,创建一个springboot项目后自己就会知道结构)
第一步:在用idea创建Maven的spring Web后:向pom.xml导入以下两个依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
第一个是数据库的驱动器,第二个是数据库链接器。
第二步:在application.properties下写下如下数据(由于mysql的版本在8以上,所以url后面一定要跟时区即:?serverTimezon=UTC,否则会报错),其中server.port的意思是启动springboot服务时的端口,data为我想连接的数据库的名字,到时候可以对其下面的表进行操作(这些基本配置对着自己的数据库来配置,别直接粘贴):
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/Mapper/*.xml
server.port=8040
spring.datasource.url=jdbc:mysql://localhost:3306/data?serverTimezone=UTC&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jdbc.template.query-timeout=1000
第三步:整合Mybatis,往pom.xml中加入以下以来依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
第四步:在resources文件夹下创建mybatis文件夹,并在mybatis文件夹下创建mybatis-config.xml文件与Mapper文件夹,如下:
第五步:向mybatis-config.xml中写下如下配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
mybatis就是为数据库而生的。
第六步(开始实战) :在与springboot的启动类(工程名+Application组成的类,在java文件夹的子文件夹下)所在目录下创建如下文件夹(bean文件夹,controller文件夹,mapper文件夹,service文件夹)。bean文件夹存放项目的实体类(用户,购物车等想要定义的某个对象),controller文件夹存放控制器类(提供一个Url,来引向对应的业务操作,这是springboot的响应方式,不同的Url的响应方式不同,因为执行的方法不同,这也是为了让工程能满足更多功能需求),service文件夹存放业务逻辑操作(bean文件夹某个对象包含的方法就放在这里),mapper文件夹(数据持久层,主要是定义一个接口对数据库进行操作)。
第七步:各文件夹下创建的东西如下(我以查询用户为例):
User.java
package com.example.demo.bean;
public class User {
private Integer id;
private String name;
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;
}
}
(主要是定义一些实体类的基本属性)
UserController.java
package com.example.demo.controller;
import com.example.demo.bean.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController {
@Autowired
UserService userService;
@ResponseBody
@GetMapping("/User")
public User getById(@RequestParam("id") Long id){
return userService.getUserById(id);
}
}
(@Controller声明这是一个控制器,因为Controller要启用Service的方法所以要定义Service的对象,@Autowired是自动注入对象,就不用new了,这是springboot提供的简单方法,@ResponseBody是为了返回Json串,后面会看到效果。@GetMapping提供一个Url,当访问这个Url就启动这个Url下的方法,就相当于Controller这个老板给手下的Service员工分配对应的工作,不同Url分配的工作不同。@RequestParam("id")是Url最后会加一个id参数来请求后面的service方法,最后会给出其使用方法,这里先记着这个点)
UserService.java
package com.example.demo.service;
import com.example.demo.bean.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public User getUserById(Long id){
return userMapper.getName(id);
}
}
(@Service声明这是一个Service对象,因为它要调用Mapepr对象,因此要定义一个Mapper对象,并调用Mapper对象的方法)
UserMapper.java
package com.example.demo.mapper;
import com.example.demo.bean.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
public User getName(Long id);
}
(@Mapper声明这是一个Mapper接口,用来操作数据库,具体的操作原理是来自Mybatis的映射机制,也就是之前依赖加入的Mybatis,该机制可在Mybatis官网查看。)
第八步:之前在resource文件夹下创建的Mapper文件夹下创建UserMapper.xml
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="getName" resultType="com.example.demo.bean.User">
select * from user where id = #{id}
</select>
</mapper>
其中namespace是填入UserMapper.java(注意是.java)的路径,作用就是映射,id是UserMapper.java定义的方法名,resultType是实体类的路径(两端一定不要有空格),下面是sql语句,因为有传id参数过来,所以后面是id=#{id},就是为了引入参数值。
第九步:在application.properties下写入mybatis的规则,如下:
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/Mapper/*.xml
(第一行是mybatis配置文件的位置,第二行是所有mapper的xml文件的地址,起到映射作用)
第十步:启动springboot项目,并在浏览器搜索栏输入:localhost:8040/User?id=1
可看到查询到id为1的用户的信息Json串。这里也能看出之前Controller的id参数用法。
数据库结构如下:
以上就是springboot项目的基本用法了,在此基础上可以研究自己的操作用法,慢慢学,一天多学一点用法就能掌握SpringBoot,本质上跟python的flask差不多。
项目链接(按上面的步骤来也行):