基于Spring MVC + Spring + MyBatis的【野生动物保护系统】

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

练习点设计: 模糊查询、删除、新增、修改

一、语言和环境

  1. 实现语言:JAVA语言。
  2. 环境要求:MyEclipse/Eclipse + Tomcat + MySql。
  3. 使用技术:Jsp+Servlet+JavaBeanSpringMVC + Spring + Mybatis

二、实现功能

随着社会的发展,人与动物需要和谐共处,现需要制作野生动物保护系统,主要功能如下:
1.首页默认显示所有动物列表,如图1所示。
图1 首页显示所有信息
2.鼠标悬停某行数据时,以线性过渡动画显示光棒效果,如图2所示。
图2 鼠标悬停效果
3.用户输入动物名称,则完成模糊查询,显示查询结果,如图3所示。
图3 模糊查询结果
4.用户点击升级或降级时,则弹出提示框,用户点击确定后,修改选中数据并显示最新数据,如图4和图5所示。图4 确认升级提示窗口

图5 数据升级后显示最新数据
5.用户点击“新增”链接,则打开新增页面,填写完相关信息后点击添加按钮,增加野生动物信息数据到数据库,且页面跳转到列表页面展示最新数据,如图6和图7所示。
图6 增加数据
图7 展示最新数据

三、 数据库设计

1.创建数据库(animal_db)。
2.创建数据表(tb_type),结构如下。

字段名说明字段类型长度备注
type_id类型编号int主键,自增,增量为1
type_name类型名称varchar50不能为空

3.创建数据表(tb_animal),结构如下。

字段名说明字段类型长度备注
id编号int主键,自增,增量为1
name动物品种varchar50不能为空
count动物数量int不能为空
level保护等级int不能为空
type_id类型编号int外键

四、推荐实现步骤

1.SSM版本的实现步骤如下:

(1)创建数据库和数据表,添加测试数据(至少添加3条测试数据)。
(2)创建Web工程并创建各个包,导入工程所需的jar文件。
(3)添加相关SSM框架支持。
(4)配置项目所需要的各种配置文件(mybatis配置文件、spring配置文件、springMVC配置文件)。
(5)创建实体类。
(6)创建MyBatis操作数据库所需的Mapper接口及其Xml映射数据库操作语句文件。
(7)创建业务逻辑相应的接口及其实现类,实现相应的业务,并在类中加入对DAO/Mapper的引用和注入。
(8)创建Controller控制器类,在Controller中添加对业务逻辑类的引用和注入,并配置springMVC配置文件。
(9)创建相关的操作页面,并使用CSS对页面进行美化。
(10)实现页面的各项操作功能,并在相关地方进行验证,操作要人性化。
(11)调试运行成功后导出相关的数据库文件并提交。

五、实现代码

1、MySQL数据库

animal_db.sql
在这里插入图片描述

2、项目Java代码

目录结构

animal_db

在这里插入图片描述

JAR包:

在这里插入图片描述在这里插入图片描述

src

com.controller

AnimaalController.java

package com.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.entity.TbAnimal;
import com.services.AnimmailServices;@Controller
public class AnimaalController {@Resourceprivate AnimmailServices animmailServices;//查询@RequestMapping("/getList")public String getAniamal(Model model,String name) {List<TbAnimal> list=animmailServices.getAnimals(name);if (name==null||name.trim().equals("")) {name=null;}model.addAttribute("getList", list);int size=list.size();model.addAttribute("sizes", size);return "Animal";}//录入@RequestMapping("/insert")public String getInsert(Model model,TbAnimal animal) {int count=animmailServices.inser(animal);return "redirect:/getList.do";}//进入新增页面@RequestMapping("/intoAdd")public String into() {return "addAnimal";}//降级@RequestMapping("/upDown")public String upDown(Model model,TbAnimal animal) {int upDown=animmailServices.down(animal);return "redirect:/getList.do";}//升级@RequestMapping("/updateDown")public String updateDown(Model model,TbAnimal animal) {int updateDown=animmailServices.upDown(animal);return "redirect:/getList.do";}}

com.dao

TbAnimalMapper.java

package com.dao;import com.entity.TbAnimal;
import java.util.List;public interface TbAnimalMapper {int deleteByPrimaryKey(Integer id);int insert(TbAnimal record);TbAnimal selectByPrimaryKey(Integer id);List<TbAnimal> selectAll();int updatedown(TbAnimal record);int updateUpdown(TbAnimal record);//模糊查询List<TbAnimal> selectLikeAll (String name);}

TbTypeMapper.java

package com.dao;import com.entity.TbType;
import java.util.List;public interface TbTypeMapper {int deleteByPrimaryKey(Integer typeId);int insert(TbType record);TbType selectByPrimaryKey(Integer typeId);List<TbType> selectAll();int updateByPrimaryKey(TbType record);
}

TbAnimalMapper.xml


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.TbAnimalMapper" ><resultMap id="BaseResultMap" type="com.entity.TbAnimal" ><id column="id" property="id" jdbcType="INTEGER" /><result column="name" property="name" jdbcType="VARCHAR" /><result column="count" property="count" jdbcType="INTEGER" /><result column="level" property="level" jdbcType="INTEGER" /><result column="type_id" property="typeId" jdbcType="INTEGER" />resultMap><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >delete from tb_animalwhere id = #{id,jdbcType=INTEGER}delete><insert id="insert" parameterType="com.entity.TbAnimal" >insert into tb_animal (id, name, count, level, type_id)values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER}, #{level,jdbcType=INTEGER}, #{typeId,jdbcType=INTEGER})insert><update id="updatedown" parameterType="com.entity.TbAnimal" >update tb_animalset level = level-1where id = #{id,jdbcType=INTEGER}update><update id="updateUpdown" parameterType="com.entity.TbAnimal" >update tb_animalset level = level+1where id = #{id,jdbcType=INTEGER}update><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >select id, name, count, level, type_idfrom tb_animalwhere id = #{id,jdbcType=INTEGER}select><select id="selectAll" resultMap="BaseResultMap" >select id, name, count, level, type_idfrom tb_animalselect><select id="selectLikeAll" resultMap="BaseResultMap" >select id, name, count, level, type_idfrom tb_animalwhere name like "%"#{name}"%"select>
mapper>

TbTypeMapper.xml


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.TbTypeMapper" ><resultMap id="BaseResultMap" type="com.entity.TbType" ><id column="type_id" property="typeId" jdbcType="INTEGER" /><result column="type_name" property="typeName" jdbcType="VARCHAR" />resultMap><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >delete from tb_typewhere type_id = #{typeId,jdbcType=INTEGER}delete><insert id="insert" parameterType="com.entity.TbType" >insert into tb_type (type_id, type_name)values (#{typeId,jdbcType=INTEGER}, #{typeName,jdbcType=VARCHAR})insert><update id="updateByPrimaryKey" parameterType="com.entity.TbType" >update tb_typeset type_name = #{typeName,jdbcType=VARCHAR}where type_id = #{typeId,jdbcType=INTEGER}update><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >select type_id, type_namefrom tb_typewhere type_id = #{typeId,jdbcType=INTEGER}select><select id="selectAll" resultMap="BaseResultMap" >select type_id, type_namefrom tb_typeselect>
mapper>

com.entity

TbAnimal.java

package com.entity;public class TbAnimal {private Integer id;private String name;private Integer count;private Integer level;private Integer typeId;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 getName() {return name;}public void setName(String name) {this.name = name == null ? null : name.trim();}public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;}public Integer getLevel() {return level;}public void setLevel(Integer level) {this.level = level;}public Integer getTypeId() {return typeId;}public void setTypeId(Integer typeId) {this.typeId = typeId;}
}

TbType.java

package com.entity;public class TbType {private Integer typeId;private String typeName;public Integer getTypeId() {return typeId;}public void setTypeId(Integer typeId) {this.typeId = typeId;}public String getTypeName() {return typeName;}public void setTypeName(String typeName) {this.typeName = typeName == null ? null : typeName.trim();}
}

com.generator

Generator.java

package com.generator;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 {/** targetRuntime="MyBatis3Simple", 不生成Example*/public void generateMyBatis() {//MBG执行过程中的警告信息List<String> warnings = new ArrayList<String>();//当生成的代码重复时,覆盖原代码boolean overwrite = true ;//String generatorFile = "/generator/generatorConfig.xml";String generatorFile = "/generatorConfig.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);//创建MBGMyBatisGenerator 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();}
}

com.serviceImpi

AnimamalServicesImpi.java

package com.serviceImpi;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.dao.TbAnimalMapper;
import com.entity.TbAnimal;
import com.services.AnimmailServices;
@Service
public class AnimamalServicesImpi implements AnimmailServices {@Resourceprivate TbAnimalMapper tbanimail;//查询@Overridepublic List<TbAnimal> getAnimals(String name) {if (name==null||name.equals("")) {List<TbAnimal> getList=tbanimail.selectAll();return getList;} else { List<TbAnimal> getLikeList=tbanimail.selectLikeAll(name);return getLikeList ;}}//录入@Overridepublic int inser(TbAnimal animal) {int count=tbanimail.insert(animal);return count;}@Overridepublic int down(TbAnimal animal) {int upDown=tbanimail.updatedown(animal);return upDown;}//升级@Overridepublic int upDown(TbAnimal animal) {int upDown=tbanimail.updateUpdown(animal);return upDown;}}

com.services

AnimmailServices.java

package com.services;import java.util.List;import com.entity.TbAnimal;public interface AnimmailServices {//查询List<TbAnimal> getAnimals(String   name);//录入int inser(TbAnimal animal);//降级int down(TbAnimal animal);//升级int upDown(TbAnimal animal);
}

mybatis

sqlMapConfig.xml


DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="com.entity" />typeAliases>
configuration>

spring

applicationContext-dao.xml


<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "><context:property-placeholder location="classpath:jdbc.properties">context:property-placeholder><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}">property><property name="Url" value="${jdbc.url}">property><property name="username" value="${jdbc.username}">property><property name="password" value="${jdbc.password}">property>bean><bean class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /><property name="dataSource" ref="dataSource" />bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage"  value="com.dao" />bean><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource">property>bean><tx:annotation-driven transaction-manager="transactionManager" />
beans>

applicationContext-service.xml


<beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "><context:component-scan base-package="com" />
beans>

spring-mvc.xml


<beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "><context:component-scan base-package="com.controller" /><mvc:annotation-driven /><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" />bean>
beans>

generatorConfig.xml


DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration><context id="MySQLContext" targetRuntime="MyBatis3Simple" defaultModelType="flat"><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><commentGenerator><property name="suppressAllComments" value="true"/><property name="suppressDate" value="true"/><property name="addRemarkComments" value="true"/>commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/animal_db"userId="root" password="root">jdbcConnection><javaModelGenerator targetPackage="com.entity" targetProject="src"><property name="trimStrings" value="true"/>javaModelGenerator><sqlMapGenerator targetPackage="com.dao" targetProject="src"/><javaClientGenerator targetPackage="com.dao" type="XMLMAPPER" targetProject="src"/><table tableName="%">table>		context>
generatorConfiguration>

jdbc.properties

jdbc.url=jdbc:mysql://localhost:3306/animal_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.jdbc.Driver

log4j.properties

# 全局配置
log4j.rootLogger=ERROR, stdout
# MyBatis日志配置
log4j.logger.com.lxh.mapper=TRACE
# 控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

WebContent

web.xml


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>animal_dbdisplay-name><welcome-file-list><welcome-file>index.htmlwelcome-file><welcome-file>index.htmwelcome-file><welcome-file>index.jspwelcome-file><welcome-file>default.htmlwelcome-file><welcome-file>default.htmwelcome-file><welcome-file>default.jspwelcome-file>welcome-file-list><context-param><param-name>contextConfigLocationparam-name><param-value>classpath:spring/applicationContext-*.xmlparam-value>context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>listener><servlet><servlet-name>springmvcservlet-name><servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class><init-param><param-name>contextConfigLocationparam-name><param-value>classpath:spring/spring-mvc.xmlparam-value>init-param><load-on-startup>1load-on-startup>servlet><servlet-mapping><servlet-name>springmvcservlet-name><url-pattern>*.dourl-pattern>servlet-mapping><filter><filter-name>CharacterEncodingFilterfilter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class><init-param><param-name>encodingparam-name><param-value>UTF-8param-value>init-param>filter><filter-mapping><filter-name>CharacterEncodingFilterfilter-name><url-pattern>/*url-pattern>filter-mapping>
web-app>

JSP

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title heretitle>
head>
<body><script>window.location.href = "getList.do";script>
body>
html>

addAnimal.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>录入新同学title>
<style type="text/css">
table {margin: auto;
}.button {margin: auto;
}
style>
head>
<body><form action="insert.do"><table border="0" cellspacing="" cellpadding=""><tr><td>   <h1 style="text-align:;">新增页面h1>td>tr><tr><td>品种:     <input type="text" name="name"value="${list.name}">td>tr><tr><td>数量:     <input type="text" name="count"value="${list.count}">td>tr><tr><td>等级:     <input type="text" name="level"value="${list.level}">td>tr><tr><td>类别:     <input type="radio"name="typeId" value="1" if test="${list.typeId==1}">c:if>>鱼类<input type="radio" name="typeId" value="2"if test="${list.typeId==2}">c:if>>鸟类td>tr><tr><td><input style="width: 100px;" type="submit" value="确定" />            <input style="width: 100px;" type="reset" value="取消"onclick="retuns()" />td>tr>table>form><script type="text/javascript">function retuns() {window.location.href = "getList.do";}script>
body>
html>

Animal.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title heretitle>
<style type="text/css">tr:hover {background: orange;}#app {width: 800px;margin: 0 auto;}table {border: 1px solid black;margin: 0 auto;width: 100%;}th, td {border: 1px solid black}table, td, th {border-collapse: collapse;border-spacing: 0;}td {text-align: center;}#end {margin-left: 650px;}
style>
<body><div id="app"><fieldset><form action="getList.do" method="get">品种: <input type="text" name="name" /> <input type="submit"value="搜索" />form>fieldset><table><tr><th>编号th><th>品种th><th>数量th><th>等级th><th>类型th><th>操作th>tr><c:forEach items="${getList}" var="list"><tr><td>${list.id}td><td>${list.name}td><td>${list.count}td><td>${list.level}td><td><c:if test="${list.typeId==1}">鸟类  c:if> <c:if test="${list.typeId==2}">鱼类  c:if>td><td><a onclick="upDown(${list.id})">降级a> <aonclick="updateDown(${list.id})">升级a>td>tr>c:forEach>table><div id="end"><span><a href="intoAdd.do">录入a>span> <span>共${sizes}条数据span>div>div><script type="text/javascript">
function upDown(id){if(confirm("确认要降级吗?")){return window.location.href="upDown.do?id="+id;}else {return false;}} 
function updateDown(id){if(confirm("确认要升级吗?")){return window.location.href="updateDown.do?id="+id;}else {return false;}} script>body>
html>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部