项目所用到的有Spring Boot , mysql,jdbc,myBatis,workbench,swagger-ui,druid
因为刚开始学习spring boot不久,对springmvc的机制还不太了解,借用swagger-ui的界面,本身只实现后端的数据处理。
关于自学myBatis,建议看狂神的教学视频
https://blog.kuangstudy.com/#
讲解内容通俗易懂
首先是数据库的E-R图
代码仅供参考,有些实现也不完全,有错误的地方,以后有时间会再继续修改
关系结构
1、player 属于 team ,n对1的关系,即将关系转化成player的team属性
2、coach 属于 team ,1对1的关系,关系转化为二者之一的属性皆可
3、worldgame与team是n对m的关系,讲关系转化成一个新的参赛列表主码为
4、club_change没有实体,是数据的变化记录,其中的ctime 和p_name 以及tname三者合起来是主码
其中有五个实体,Player(参赛选手),Team(队伍),Coach(教练),worldgame(世界赛),共有七个表,选手表,队伍表,教练表,转会表,世界赛表,参赛列表。
以上是数据库的一些截图
下面贴上完成后web界面如何进行增删改查
对于每一个表,都实现了增删改查的操作,级联关系在创建表的时候写了,所以java代码中没有体现这个
进入localhost:8012/swagger-ui.html
下面的画面是我们的选择页面,在右上角的选择框中可以选择我们需要查询的数据表,
再往下面的每一条get都是一个增删改查的方法,点击他们
点击想要使用的get方法后显示方法的详细信息,点击try it out 开始输入
输入空格内的内容进行查询,点击execute
下面贴上各个层面的代码
导入的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
配置文件
配置jdbc的连接路径
我的mysql版本为5.5,更新的版本路径可能不同
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/lplmenber?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=hk123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=1000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
server.port=8012
server.servlet.session.timeout=10
server.tomcat.uri-encoding=UTF-8
player 的实体
public class player {
private String p_name;
private int p_age;
private String place;
private int p_kill;
private int p_death;
private int p_assist;
private String team;
public String getP_name() {
return p_name;
}
public int getP_age() {
return p_age;
}
public String getPlace() {
return place;
}
public int getP_kill() {
return p_kill;
}
public int getP_death() {
return p_death;
}
public int getP_assist() {
return p_assist;
}
public String getTeam() {
return team;
}
public void setP_name(String p_name) {
this.p_name = p_name;
}
public void setP_age(int p_age) {
this.p_age = p_age;
}
public void setPlace(String place) {
this.place = place;
}
public void setP_kill(int p_kill) {
this.p_kill = p_kill;
}
public void setP_death(int p_death) {
this.p_death = p_death;
}
public void setP_assist(int p_assist) {
this.p_assist = p_assist;
}
public void setTeam(String team) {
this.team = team;
}
}
控制player的增删改查的playermapper
package com.athk.lpl.mapper;
import com.athk.lpl.Entity.player;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
@Mapper
public interface PlayerMapper {
@Select("select * from player")
public List<Map<String,Object>> getAllPlayer();
@Select("select * from player where p_name = #{name}")
public player getPlayerByName(String name);
@Delete("delete from player where p_name = #{name}")
public int deletePlayerByName(String name);
@Insert("insert into player(p_name,p_age,place,p_kill,p_death,p_assist,team)" +
"values (#{p_name},#{p_age},#{place},#{p_kill},#{p_death},#{p_assist},#{team})")
public int insertPlayer(player player);
@Update("update player set place = #{place} where p_name = #{p_name}")
public int updatePlayer(String place,String p_name);
}
controller控制器,控制web页面提交的数据
这里之后,我们不用写MvcConfigure,因为我们前面已经导入了swagger-ui的依赖包,我们swagger替我们实现前端的文档页面
package com.athk.lpl.controller.Player;
import com.athk.lpl.Entity.player;
import com.athk.lpl.mapper.PlayerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class PlayerController {
@Autowired
PlayerMapper playerMapper;
@GetMapping("/allplayer")
public List<Map<String,Object>> getAllPlayer(){
return playerMapper.getAllPlayer();
}
@GetMapping("/player/{p_name}")
public player getPlayer(String p_name){
return playerMapper.getPlayerByName(p_name);
}
@GetMapping("/player")
public player insertPlayer(player player){
playerMapper.insertPlayer(player);
return player;
}
@GetMapping("/player/{p_name}/{place}")
public String updatePlayer(String place,String p_name){
playerMapper.updatePlayer(place,p_name);
return place;
}
@GetMapping("/player/delete/{p_name}")
public player deletePlayer(String p_name){
player player = playerMapper.getPlayerByName(p_name);
if(player==null) return null;
playerMapper.deletePlayerByName(p_name);
return player;
}
}
@Configuration
@EnableSwagger2
public class SwaggerConfig {
c Docket Playerdocket(){
return new Docket(SWAGGER_2)
.apiInfo(apiInfoplayer())
.groupName("Player")
.select()
.apis(RequestHandlerSelectors.basePackage("com.athk.lpl.controller.Player"))
.build();
}
private ApiInfo apiInfoplayer(){
Contact contact = new Contact("郝凯&王冲冲", "", "2398894692@qq.com");
return new ApiInfo("参赛选手",
"玲珑四壁争将本色漆",
"1.0",
"urn:tos",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}