数据库
首先给学生表插入三个学生的信息
再给成绩表插入对应的信息
再给课程表添加信息
数据库接口
在接口添加查询排名的方法
// 根据课程号 cid 查询学生信息,按成绩排名
List<Student> queryScoreRank(Integer cid);
在 XML 文件配置该方法的 SQL
<select id="queryScoreRank" parameterType="java.lang.Integer" resultType="Student">
SELECT s1.id, s1.sname, s2.score, c.cname
FROM students AS s1, scores AS s2, courses AS c
WHERE s2.cid = c.id AND s2.sid = s1.id AND c.id = #{cid}
ORDER BY score DESC
</select>
控制器
在 Web Controller 增加查询排名的方法,调用数据库接口查询排名
// 查询成绩排名
@GetMapping("/queryScoreRank/{cid}")
public List<Student> queryScoreRank(@PathVariable("cid") Integer cid) {
return studentMapper.queryScoreRank(cid);
}
Unity
创建一个 Cube 物体和两个文本框,上面的文本框提示点击 S 键查看排名,下面的文本框用来显示结果
添加一个 C# 脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using Newtonsoft.Json;
public class QueryScoreRank : MonoBehaviour
{
public Text text;
// Start is called before the first frame update
void Start()
{
// 按下 S 键后就通过 GET 请求获取数据
if (Input.GetKeyDown(KeyCode.S))
{
StartCoroutine(GetRequest(3));
}
}
// Update is called once per frame
void Update()
{
}
public IEnumerator GetRequest(int cid)
{
string url = "http://localhost:8010/unity/queryScoreRank/" + cid;
Debug.Log("请求的url:" + url);
using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
{
yield return webRequest.SendWebRequest();
// 接受返回的数据
Dictionary<string, object> data = null;
// 出现网络错误
if (webRequest.isHttpError || webRequest.isNetworkError)
{
Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text);
}
else
{
string result = "姓名 成绩 实验名\n";
// 输出获取到的数据到控制台
List<Student> students = JsonConvert.DeserializeObject<List<Student>>(webRequest.downloadHandler.text);
foreach (Student student in students)
{
result += student.sname + " " + student.score + " " + student.cname + "\n";
}
text.text = result;
}
}
}
public class Student
{
public int id;
public string sname;
public string cname;
public int score;
}
}
把显示结果的文本组件拖动到 public text 域
测试
启动 Unity,点击 S 键