SpringBoot的引入大大简化了Spring的配置文件繁琐的问题,本项目通过班级表和学生表来展示springboot带来的代码优化
首先创建springboot项目(这里不在展示创建项目流程,仅仅展示项目目录结构,如下图:)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6fe1b6c401b355922d6078c49c896e60.png)
创建springboot项目的pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.10</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yaokui</groupId>
<artifactId>springtestdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springtestdemo</name>
<description>springtestdemo</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<!--mybatis和springboot整合的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建springboot配置文件application.properties
# 数据源的配置信息
spring.datasource.druid.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.druid.username= root
spring.datasource.druid.password= root
spring.datasource.druid.initial-size=5
#指定映射文件所在的路径
mybatis.mapper-locations=classpath:com.yaokui.mapper
创建启动类设置
package com.yaokui;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.yaokui.mapper")
public class SpringtestdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringtestdemoApplication.class, args);
}
}
controller层创建StudentController
package com.yaokui.controller;
import com.yaokui.domain.Tblstudent;
import com.yaokui.service.StudentService;
import com.yaokui.util.ReturnData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("getAll")
public ReturnData getAll(){
return studentService.queryAll();
}
@GetMapping("getById/{sid}")
public ReturnData getById(@PathVariable Integer sid){
return studentService.queryById(sid);
}
@PostMapping("insert")
public ReturnData insert(@RequestBody Tblstudent tblstudent){
return studentService.insert(tblstudent);
}
@PutMapping("update")
public ReturnData update(@RequestBody Tblstudent tblstudent){
return studentService.update(tblstudent);
}
@DeleteMapping("delete/{sid}")
public ReturnData delete(@PathVariable Integer sid){
return studentService.delete(sid);
}
}
domain层中创建实体Tblclass和Tblstudent
package com.yaokui.domain;
public class Tblclass {
private Integer cid;
private String cname;
private Integer capacity;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Integer getCapacity() {
return capacity;
}
public void setCapacity(Integer capacity) {
this.capacity = capacity;
}
@Override
public String toString() {
return "Tblclass{" +
"cid=" + cid +
", cname='" + cname + '\'' +
", capacity=" + capacity +
'}';
}
}
package com.yaokui.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class Tblstudent {
private Integer sid;
private String username;
private Integer age;
private String gender;
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private Date birthday;
private Integer cid;
private Tblclass tblclass;
public Tblclass getTblclass() {
return tblclass;
}
public void setTblclass(Tblclass tblclass) {
this.tblclass = tblclass;
}
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
@Override
public String toString() {
return "Tblstudent{" +
"sid=" + sid +
", username='" + username + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", birthday=" + birthday +
", cid=" + cid +
", tblclass=" + tblclass +
'}';
}
}
mapper层创建mapper接口StudentMapper
在这里插入代码片package com.yaokui.mapper;
import com.yaokui.domain.Tblstudent;
import java.util.List;
public interface StudentMapper {
List<Tblstudent> findAll();
Tblstudent findById(Integer sid);
int insert(Tblstudent tblstudent);
int update(Tblstudent tblstudent);
int delete(Integer sid);
}
service层创建service接口StudentService和实现类StudentServiceImpl
package com.yaokui.service;
import com.yaokui.domain.Tblstudent;
import com.yaokui.util.ReturnData;
public interface StudentService {
ReturnData queryAll();
ReturnData queryById(Integer empId);
ReturnData insert(Tblstudent tblstudent);
ReturnData update(Tblstudent tblstudent);
ReturnData delete(Integer sid);
}
package com.yaokui.service.impl;
import com.yaokui.domain.Tblstudent;
import com.yaokui.mapper.StudentMapper;
import com.yaokui.service.StudentService;
import com.yaokui.util.ReturnData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public ReturnData queryAll() {
List<Tblstudent> tblstudents = studentMapper.findAll();
return new ReturnData(200,"successful",tblstudents);
}
@Override
public ReturnData queryById(Integer sid) {
Tblstudent tblstudent = studentMapper.findById(sid);
return new ReturnData(200,"successful",tblstudent);
}
@Override
public ReturnData insert(Tblstudent tblstudent) {
int i = studentMapper.insert(tblstudent);
System.out.println(i);
if(i>0){
return new ReturnData(200,"添加成功");
}else {
return new ReturnData(500,"添加失败");
}
}
@Override
public ReturnData update(Tblstudent tblstudent) {
int i = studentMapper.update(tblstudent);
if(i>0){
return new ReturnData(200,"修改成功");
}else {
return new ReturnData(500,"修改失败");
}
}
@Override
public ReturnData delete(Integer sid) {
int i = studentMapper.delete(sid);
if(i>0){
return new ReturnData(200,"删除成功");
}else {
return new ReturnData(500,"删除失败");
}
}
}
这里没有前端页面,通过postman来测试,需要后端定义json格式进行前后端的传送,创建util包定义ReturnData类
package com.yaokui.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReturnData {
private Integer code;
private String msg;
private Object data;
public ReturnData(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}
resources资源下mybatis xml文件StudentMapper.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.yaokui.mapper.StudentMapper">
<!--查询全部信息-->
<resultMap id="studentResultMap" type="com.yaokui.domain.Tblstudent" autoMapping="true">
<id property="sid" column="sid"/>
<id property="username" column="username"/>
<id property="age" column="age"/>
<id property="gender" column="gender"/>
<id property="birthday" column="birthday"/>
<association property="tblclass" javaType="com.yaokui.domain.Tblclass" autoMapping="true">
<id property="cid" column="cid"/>
<id property="cname" column="cname"/>
<id property="capacity" column="capacity"/>
</association>
</resultMap>
<select id="findAll" resultMap="studentResultMap">
select s.username, s.age, s.gender, s.birthday, c.cname, c.capacity
from tblstudent s
left join tblclass c
on s.cid=c.cid
where s.flag=0
</select>
<!--根据id进行查询-->
<select id="findById" resultType="com.yaokui.domain.Tblstudent">
select * from tblstudent where sid=#{sid}
</select>
<!--新增-->
<insert id="insert" parameterType="com.yaokui.domain.Tblstudent">
insert into tblstudent (username, age, gender, birthday, cid, flag)
values (#{username}, #{age}, #{gender}, #{birthday},#{cid}, 0);
</insert>
<!--修改-->
<update id="update" parameterType="com.yaokui.domain.Tblstudent">
update tblstudent
<set>
<if test="username!=null and username!=''">
username=#{username},
</if>
<if test="age!=null and age!=''">
age=#{age},
</if>
<if test="gender!=null and gender!=''">
gender=#{gender},
</if>
<if test="birthday!=null and birthday!=''">
birthday=#{birthday}
</if>
</set>
where sid=#{sid}
</update>
<!--删除-->
<update id="delete" parameterType="int">
update tblstudent set flag =1 where sid=#{sid}
</update>
</mapper>