栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Spring MVC + Spring + MyBatis的【密室逃脱游戏主题排行榜】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Spring MVC + Spring + MyBatis的【密室逃脱游戏主题排行榜】

资源下载:
https://download.csdn.net/download/weixin_44893902/25706959

一、语言和环境 1. 实现语言:Java语言 2. 环境要求:eclipse/myeclipse /idea、maven、mysql 3. 使用技术:Spring、SpringMVC、MyBatis、连接池和 json 包自行选择 二、实现功能

密室逃脱游戏越来越受年轻人的喜欢,现在将各地密室游戏主题进行排名,评选2021年度最受玩家喜欢的密室主题。

说明:下列界面样式仅供参考,实际完成效果美观合理即可。

1、显示数据

根据图1格式,显示t_games表中所有的数据,并且按照【票数】列进行降序排序,其实【主题种类】一列在t_games表存的是数字,需结合t_gamesType表中对应id值显示出种类文字。每行数据后面有一个投票按钮可向对应主题进行投票。

2、查询数据

可根据【主题名称】和【主题类型】进行数据查询。若【主题名称】为空,则按照【主题类型】查询,若【主题名称】不为空,则需要根据【主题名称】进行模糊查询并且也要结合【主题类型】查询。【主题类型】需是下拉框,且里面的选项是从数据库表t_gamesType中查询出来。如图所示。

3、投票功能

点击【操作】列中的投票按钮,弹出一个二次确认框,再次点击确定,可为对应的主题投票,投票成功后,该数据票数+1,如图所示:

投票数据刷新后,若票数有变化,要按新的数据进行降序排序,如图所示:

4、新增主题

点击新增按钮,进入新增页面,主题种类中的选项需要去数据库中t_gamesType表查询,上线时间需要date控件,点击新增按钮后,将数据插入数据表中,新增主题票数默认为0,并返回主页面显示最新数据,如图所示:

三、数据库设计 1、创建数据库:gamesDB。 2、创建密室排行数据表(t_games)

结构如下:

表名:t_ games
实体名称:密室排行数据表
主键:id

序号字段名称字段说明类型位数属性备注
1id主键int11非空id主键列,自增1
2gamesName密室主题名varchar50非空
3gamesType密室类型编号int11非空外键,t_gamesType表中id
4producers出品方Varchar50非空
5uptime上线时间date非空
6votes票数int11非空默认值为0
四、推荐步骤

1、使用MySql创建数据库,创建对应的2张表,按照要求插入数据。

t_games表

t_gamesType表

2、使用开发工具创建项目,使用maven添加spring、springMVC、mybatis、连接池等相关依赖坐标。

3、完成MyBatis持久层功能操作,分别针对2个表完成对应的功能编写。

4、完成业务逻辑层接口、实现类的功能实现。

5、完成控制器对应的功能编写

6、创建界面分别和控制器进行交互实现相应的功能

7 斜体样式、部署项目到Tomcat,运行访问测试项目是否正常

五、实现代码 1、MySQL数据库

gamesdb.sql


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `t_games`
-- ----------------------------
DROp TABLE IF EXISTS `t_games`;
CREATE TABLE `t_games` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `games_name` varchar(255) DEFAULT NULL,
  `games_type` int(11) DEFAULT NULL,
  `producers` varchar(255) DEFAULT NULL,
  `uptime` varchar(255) DEFAULT NULL,
  `votes` int(11) unsigned zerofill DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_games
-- ----------------------------
INSERT INTO `t_games` VALUES ('1', '黑暗侵袭', '1', '911地下城', '2019-07-01', '00000005400');
INSERT INTO `t_games` VALUES ('2', '寂静之地', '1', '911地下城', '2021-04-10', '00000003421');
INSERT INTO `t_games` VALUES ('3', '潜伏', '2', '长沙支眼文化有限公司', '2020-06-20', '00000002339');
INSERT INTO `t_games` VALUES ('4', '复活石', '3', '对角巷', '2020-08-30', '00000002340');
INSERT INTO `t_games` VALUES ('5', '西游记', '1', '文化传媒', '2021-07-27', '00000000007');

-- ----------------------------
-- Table structure for `t_gamestype`
-- ----------------------------
DROP TABLE IF EXISTS `t_gamestype`;
CREATE TABLE `t_gamestype` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_gamestype
-- ----------------------------
INSERT INTO `t_gamestype` VALUES ('1', '恐怖');
INSERT INTO `t_gamestype` VALUES ('2', '谍战');
INSERT INTO `t_gamestype` VALUES ('3', '解谜');

2、JAVA代码

gamesDB

(1) com.cst.controller【控制层】 ① TGamesController,java
package com.cst.controller;

import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cst.entity.TGames;
import com.cst.service.TGamesService;

@Controller
public class TGamesController {
	@Resource
	TGamesService tGamesService;
	
	//查询所有数据,模糊查询
	@RequestMapping("/tGamesList")
	public String accountList(Model model,String keyword,String type){
		List selectAll = tGamesService.selectAll(keyword,type);
		model.addAttribute("selectAll",selectAll);
		return "games";
	}
	
	//进入添加的方法
	@RequestMapping("/addGames")
	public String addAccount() {
		return "addGames";
	}	
	//执行添加的操作
	@RequestMapping("/addGamesDo")
	public String addAccountDo(TGames games) {
		games.setVotes(0);
		int users = tGamesService.insert(games);
		if (users>0) {
			return "redirect:/tGamesList.do";
		}else {
			return "forward:/addGames.do";
		}
	}
	
	@RequestMapping("/updateGamesDo")
	public String updateGamesDo(Integer id,Integer votes) {
		TGames games=new TGames();
		int votes1=votes+1;
		games.setId(id);
		games.setVotes(votes1);
		tGamesService.updateByPrimaryKey(games);
		return "redirect:/tGamesList.do";
	}
	
}


(2) com.cst.dao【数据库访问层】 ① TGamesMapper.java
package com.cst.dao;

import com.cst.entity.TGames;
import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface TGamesMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(TGames record);

    TGames selectByPrimaryKey(Integer id);

    List selectAll(@Param("keyword")String keyword,@Param("type")String type);

    int updateByPrimaryKey(TGames record);
}
② TGamestypeMapper.java
package com.cst.dao;

import com.cst.entity.TGamestype;
import java.util.List;

public interface TGamestypeMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(TGamestype record);

    TGamestype selectByPrimaryKey(Integer id);

    List selectAll();

    int updateByPrimaryKey(TGamestype record);
}
③ TGamesMapper.xml



  
    
    
    
    
    
    
    
  
  
    delete from t_games
    where id = #{id,jdbcType=INTEGER}
  
  
    insert into t_games (id, games_name, games_type, 
      producers, uptime, votes
      )
    values (#{id,jdbcType=INTEGER}, #{gamesName,jdbcType=VARCHAR}, #{gamesType,jdbcType=INTEGER}, 
      #{producers,jdbcType=VARCHAR}, #{uptime,jdbcType=VARCHAR}, #{votes,jdbcType=INTEGER}
      )
  
  
    update t_games
    set votes = #{votes,jdbcType=INTEGER}
    where id = #{id,jdbcType=INTEGER}
  
  
    select g.id, games_name, type_name, producers, uptime, votes
    from t_games g,t_gamestype t where g.games_type=t.id
    
		and games_name like concat('%', #{keyword}, '%')
	
	
		and type_name=#{type}
	
	order by votes desc
  

④ TGamestypeMapper.xml



  
    
    
  
  
    delete from t_gamestype
    where id = #{id,jdbcType=INTEGER}
  
  
    insert into t_gamestype (id, type_name)
    values (#{id,jdbcType=INTEGER}, #{typeName,jdbcType=VARCHAR})
  
  
    update t_gamestype
    set type_name = #{typeName,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  
  
    select id, type_name
    from t_gamestype
  

(3) com.cst.entity 【存放实体的包】 ① TGames.java
package com.cst.entity;

public class TGames {
    private Integer id;

    private String gamesName;

    private Integer gamesType;

    private String producers;

    private String uptime;

    private Integer votes;
    
    private String typeName;
    
    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName == null ? null : typeName.trim();
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getGamesName() {
        return gamesName;
    }

    public void setGamesName(String gamesName) {
        this.gamesName = gamesName == null ? null : gamesName.trim();
    }

    public Integer getGamesType() {
        return gamesType;
    }

    public void setGamesType(Integer gamesType) {
        this.gamesType = gamesType;
    }

    public String getProducers() {
        return producers;
    }

    public void setProducers(String producers) {
        this.producers = producers == null ? null : producers.trim();
    }

    public String getUptime() {
        return uptime;
    }

    public void setUptime(String uptime) {
        this.uptime = uptime == null ? null : uptime.trim();
    }

    public Integer getVotes() {
        return votes;
    }

    public void setVotes(Integer votes) {
        this.votes = votes;
    }
}
② TGamestype.java
package com.cst.entity;

public class TGamestype {
    private Integer id;

    private String typeName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName == null ? null : typeName.trim();
    }
}
(4) com.cst.generator【实体类自动生成包】 ① Generator.java
package genter;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

public class Generator {

public void generateMyBatis() {
	//MBG执行过程中的警告信息
	List warnings = new ArrayList();
	//当生成的代码重复时,覆盖原代码
	boolean overwrite = true ;
	String generatorFile = "/generatorConfig.xml";
	//String generatorFile = "/generator/generatorConfigExample.xml";
	//读取MBG配置文件
	InputStream is = Generator.class.getResourceAsStream(generatorFile);

	ConfigurationParser cp = new ConfigurationParser(warnings);
	Configuration config;
	try {
		config = cp.parseConfiguration(is);
		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		//创建MBG
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
		//执行生成代码
		myBatisGenerator.generate(null);
	} catch (IOException e) {
		e.printStackTrace();
	} catch (XMLParserException e) {
		e.printStackTrace();
	} catch (InvalidConfigurationException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
	for (String warning : warnings) {
		System.out.println(warning);
	}
}


public static void main(String[] args) {
	Generator generator = new Generator();
	generator.generateMyBatis();
}
}


(5) com.cst.service【与页面进行交互】 ① TGamesService.java
package com.cst.service;

import java.util.List;

import com.cst.entity.TGames;
import com.cst.entity.TGamestype;


public interface TGamesService {

	    int insert(TGames record);

	    List selectAll(String keyword,String type);
	    int updateByPrimaryKey(TGames record);
}

(6) com.cst.service.imp【service的实现类】 ① TGServiceImpl.java
package com.cst.service.imp;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cst.dao.TGamesMapper;
import com.cst.entity.TGames;
import com.cst.entity.TGamestype;
import com.cst.service.TGamesService;

@Service
public class TGServiceImpl implements TGamesService{

	@Resource
	TGamesMapper tgamesMapper; 
	
	@Override
	public List selectAll(String keyword,String type) {
		// TODO Auto-generated method stub
		List tGamesList=tgamesMapper.selectAll(keyword,type);
		return tGamesList;
	}
	
	@Override
	public int insert(TGames record) {
		// TODO Auto-generated method stub
		int add=tgamesMapper.insert(record);
		return add;
	}

	@Override
	public int updateByPrimaryKey(TGames record) {
		// TODO Auto-generated method stub
		int updateByPrimaryKey = tgamesMapper.updateByPrimaryKey(record);
		return updateByPrimaryKey;
	}

}

3、JSP页面 (1) Index.jsp【设置默认打开页面】
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Insert title here


<%
	String path=request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>



(2) games.jsp【主页面】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>



2021年密室逃脱主题排行榜

搜索
主题名称: 类型:

编号 主题名称 主题种类 出品方 上线时间 票数 操作
${games.id} ${games.gamesName} ${games.typeName} ${games.producers} ${games.uptime} ${games.votes} 投票    
共计${selectAll.size()}条数据
(3) addGames.jsp【添加页面】
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

	
		
		
		
	
	
		

新增密室逃脱主题

名称:
类型
出品方:
上线时间:
(4) web.xml【xml配置】


  gamesDB
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
   
  
  	contextConfigLocation
  	classpath:spring/applicationContext-*.xml
  
  
  
  	org.springframework.web.context.ContextLoaderListener
  
  
	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:spring/spring-mvc.xml
		
		1
	
	
		springmvc
		*.do
	
	
  
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        CharacterEncodingFilter
        /*
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号