学校是真的迷 每次课设都发个树莓派 但是都让我们照着文档一步步走 所以为啥不直接搞好呢?还非要我们上手去搞 这一搞又是一天 我人麻了
唉
今天首先是仔细的设计了一下数据库 ,但是设计数据库的时候又不得不考虑之后实现的项目有哪些功能 因为我必须要建立在数据库的基础上才能实现那些项目,本来是打算照着上学期的项目改一改 只是换个框架而已 但是又想了一下 要是这样我还不如直接交上学期的项目 因此 我决定实现我上学期用servlet没实现的那些功能 。首先就是照片上传 ,还有分页,还有就是按日期查询比赛。这些功能应该都不是很难。项目的核心功能就是分析比赛和推测比赛的胜率 这些应该都不是大问题 直接搞一些公式算出来就好了 其他的东西都是基本功 到时候想到哪里写到哪里把,让我设计我是真没啥经验。 前端页面就去网上找一些素材把 然后再直接copy上来
因为只有短短五天的编码时间 所以我项目也不可能实现的太大 但是springboot好就好在我后期要是再增加功能的话也不会太麻烦 。
首先展示一下我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 里面的东西 我直接在文章里面写了 写我自己的理解。
明天继续完成项目 争取明天多写点 把基础的功能都完成把