前言
学校是真的迷 每次课设都发个树莓派 但是都让我们照着文档一步步走 所以为啥不直接搞好呢?还非要我们上手去搞 这一搞又是一天 我人麻了
唉
今天首先是仔细的设计了一下数据库 ,但是设计数据库的时候又不得不考虑之后实现的项目有哪些功能 因为我必须要建立在数据库的基础上才能实现那些项目,本来是打算照着上学期的项目改一改 只是换个框架而已 但是又想了一下 要是这样我还不如直接交上学期的项目 因此 我决定实现我上学期用servlet没实现的那些功能 。首先就是照片上传 ,还有分页,还有就是按日期查询比赛。这些功能应该都不是很难。项目的核心功能就是分析比赛和推测比赛的胜率 这些应该都不是大问题 直接搞一些公式算出来就好了 其他的东西都是基本功 到时候想到哪里写到哪里把,让我设计我是真没啥经验。 前端页面就去网上找一些素材把 然后再直接copy上来
因为只有短短五天的编码时间 所以我项目也不可能实现的太大 但是springboot好就好在我后期要是再增加功能的话也不会太麻烦 。
数据库+Mapper
首先展示一下我player的类的属性 因为这个player是核心的类 要考虑实现的功能 但是又要考虑实现的时间和能否实现 综合而言就是以下几个属性
然后就是把这个player的Mapper接口写好了 基本的功能也能实现
package com.hunanpyy.lplmgmt.mapper;
import com.hunanpyy.lplmgmt.pojo.Player;
import com.hunanpyy.lplmgmt.pojo.User;
import java.util.List;
/**
* @author Michelle
*/
public interface PlayerMapper {
// 新添加选手
boolean addPlayer(Player player);
// 选手注销
boolean deletePlayer(String id);
//查询的接口
Player selectPlayerByName(String name);
Player selectPlayerByID(String id);
List<Player> selectAllPlayer();
List<Player> selectPlayerByLocation(String location);
List<Player> selectPlayerByTeam(String team);
}
<?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.hunanpyy.lplmgmt.mapper.PlayerMapper">
<select id="selectPlayerByName" resultType="Player" parameterType="String">
select * from lplplayer where id = #{id};
</select>
<select id="selectAllPlayer" resultType="Player" >
select * from lplplayer ;
</select>
<select id="selectPlayerByLocation" resultType="Player" >
select * from lplplayer where location=#{location};
</select>
<select id="selectPlayerByTeam" resultType="Player" >
select * from lplplayer where location=#{team};
</select>
<select id="selectPlayerByID" resultType="Player" parameterType="String">
select * from lplplayer where id = #{id};
</select>
<insert id="addPlayer" parameterType="Player" >
insert into lplplayer (name,id,password)
values (#{name},#{id},#{password});
</insert>
<delete id="deletePlayer" parameterType="string">
delete * from lplplayer
where id=#{id};
</delete>
<!-- <update id="userUpdatePassword" parameterType="User">-->
<!-- update lpluser-->
<!-- set name = #{name}, password=#{password}-->
<!-- where id = #{id} ;-->
<!-- </update>-->
</mapper>
用着MyBatis来开发是真的块 感觉一天就能把这些接口全给写完。
图片上传
这算是我实现这个项目的一个小难点把 。初学者+莫得老师指导只能靠慢慢摸索。还好有csdn和哔站。下面就讲讲详细的步骤 这里我并没有直接来实现我的这个选手头像上传功能 我仅仅用了一个小的Demo来参透图片上传。
前端首先需要一个input标签 用来传输文件
<form action="/pictureUpload" method="post" enctype="multipart/form-data">
<label>
<input type="file" name="file" >
<input type="submit">
</label>
</form>
<img src="${filename}"/>
<img src="../temp-rainy/ff692f36-ad13-4362-8e8c-7b67048eac85.jpg">
</body>
这里就是一个简单的上传图片 但是要注意那个enctype 要使用二进制传文件。
然后就是controller层 这里的话
package com.hunanpyy.lplmgmt.controller;
import com.hunanpyy.lplmgmt.service.PlayerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* @author Michelle
*/
@Controller
public class PlayerController {
@Autowired
PlayerService playerService;
@PostMapping(value = "pictureUpload")
String pictureUpload(@RequestParam("file") MultipartFile file 这个地方
查了一下 个也就是二进制流读取到的文件将这个文件保存下来,
Model model){
if (file.isEmpty()) {
System.out.println("文件为空空");
}
String fileName = file.getOriginalFilename();
// 直接通过这个二进制文件来获得文件最初始的文件名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 后缀名
String filePath = "F:\\thelplmgmt\\src\\main\\webapp\\temp-rainy\\";
// 上传后的路径
fileName = UUID.randomUUID() + suffixName;
// 这个就是拼接出来的新文件名 但是现在还是没有给这个file 知识一串字符串
File dest = new File(filePath + fileName);
新建立一个文件
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
这个就是把这个二进制文件file 也就是那张图片 写到dest这个文件位置
} catch (IOException e) {
e.printStackTrace();
}
String filename = "../temp-rainy/"+fileName;
System.out.println(filename);
然后再拼接出这个文件的URL 传给前端 直接解析出来 这样我的数据库里面就只需要存这个文件
的URL了 要是看头像的话我也能直接取出来 用这个方法还能保存
model.addAttribute("filename", filename);
System.out.println(fileName);
return "index";
}
}
这里要注意的是 提交表单一定是要用post请求 你想想get传参数是直接接在URL后面 这里当然不行 然后来阅读这个controller 里面的东西 我直接在文章里面写了 写我自己的理解。
明天加油
明天继续完成项目 争取明天多写点 把基础的功能都完成把