资源下载:https://download.csdn.net/download/weixin_44893902/45600390
练习点设计:模糊查询、删除、新增
一、语言和环境
- 实现语言:JAVA语言。
- 环境要求:MyEclipse/Eclipse + Tomcat + MySql。
- 使用技术:
Jsp
+Servle
t+JavaBean
或SpringMVC
+Spring
+Mybatis
。
二、实现功能
随着公司业务的发展,需要一款在线外包资源管理系统,主要功能如下:
- 首页默认显示所有开发人员信息,如图所示。
2.鼠标悬停某行数据时,以线性过渡动画显示光棒效果,如图所示。
3.用户选择级别,则根据级别查询,显示查询结果,如图所示。
4.用户选择工作年限,则根据工作年限查询,显示查询结果,如图所示
5.用户选择两个选项,根据两个选项查询,显示查询结果,如图所示
6.用户两个选项为空,默认为全查,显示查询结果,如图所示
7.用户点击删除,弹出提示框,用户点击确定后,删除选中数据并显示最新数据,如图所示。
8.用户在页面下方填写表单信息,点击“确定添加”按钮,增加课程信息数据到数据库, 且页面跳转到列表页面展示最新数据,如图9所示。添加课程之前,需要对姓名进行非空验证,如图10所示
三、数据库设计
1.创建数据库(os_db
)。
2.创建数据表(os_db
),结构如下。
字段名 | 说明 | 字段类型 | 长度 | 备注 |
---|---|---|---|---|
id | 编号 | int | 主键,自增,增量为1 | |
name | 书籍名称 | varchar | 50 | 不能为空 |
author | 作者 | varchar | 10 | 不能为空 |
publish_date | 出版日期 | date | 不能为空 | |
press | 出版社 | varchar | 50 | 不能为空 |
四、推荐实现步骤
SSM版本的实现步骤如下:
(1)创建数据库和数据表,添加测试数据(至少添加5条测试数据)。
(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数据库
os_db.sql
/*
Date: 06/08/2021 19:33:22
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_dever
-- ----------------------------
DROP TABLE IF EXISTS `tb_dever`;
CREATE TABLE `tb_dever` (
`dev_id` int(11) NOT NULL AUTO_INCREMENT,
`dev_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`dev_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`dev_work_year` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`dev_in_year` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`dev_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_dever
-- ----------------------------
INSERT INTO `tb_dever` VALUES (1, '张三', '高级', '40', '2021-08-02');
INSERT INTO `tb_dever` VALUES (2, '李四', '高级', '25', '2021-07-28');
INSERT INTO `tb_dever` VALUES (3, '王五', '中级', '40', '2020-11-13');
INSERT INTO `tb_dever` VALUES (4, '李梅', '高级', '35', '2021-05-12');
INSERT INTO `tb_dever` VALUES (5, '杨齐', '中级', '28', '2021-07-16');
SET FOREIGN_KEY_CHECKS = 1;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
2、项目Java代码
目录结构
os_db
JAR包:
src
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 = "/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();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
com.mhys.crm.controller
TbMemberInfoController.java
package com.mhys.crm.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.mhys.crm.entity.TbDever;
import com.mhys.crm.service.TbDeverService;
@Controller
public class TbMemberInfoController {
@Resource
private TbDeverService tbDeverservice;
@RequestMapping("/list")
public String getMemberList(Model model,String keyword,String devLevel) {
List<TbDever> selctAll = tbDeverservice.getSelctAll(keyword,devLevel);
model.addAttribute("selctAll", selctAll);
return "Dever";
}
@RequestMapping("/delDev")
public String delDev(Model model,Integer id) {
tbDeverservice.deleMember(id);
return "redirect:/list.do";
}
@RequestMapping("/toupdate")
public String toadd(Model model,Integer id) {
TbDever selByKey = tbDeverservice.selectByPrimaryKey(id);
model.addAttribute("tbDever", selByKey);
return "updateDever";
}
@RequestMapping("/addDev")
public String toaddDev(Model model,TbDever tbDever) {
tbDeverservice.addMember(tbDever);
return "redirect:/list.do";
}
@RequestMapping("/upDev")
public String upDev(Model model,TbDever upadtetbDever) {
int update = tbDeverservice.updateByPrimaryKey(upadtetbDever);
if (update>0) {
System.out.println("淇敼鎴愬姛");
return "redirect:/list.do";
}else {
System.out.println("淇敼澶辫触");
return "forward:/toupdate.do";
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
com.mhys.crm.dao
TbDeverMapper.java
package com.mhys.crm.dao;
import com.mhys.crm.entity.TbDever;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface TbDeverMapper {
int deleteByPrimaryKey(Integer devId);
int insert(TbDever record);
TbDever selectByPrimaryKey(Integer devId);
List<TbDever> selectAll(@Param("keyword")String name,@Param("devLevel")String devLevel);
int updateByPrimaryKey(TbDever record);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
TbDeverMapper.xml
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mhys.crm.dao.TbDeverMapper" >
<resultMap id="BaseResultMap" type="com.mhys.crm.entity.TbDever" >
<id column="dev_id" property="devId" jdbcType="INTEGER" />
<result column="dev_name" property="devName" jdbcType="VARCHAR" />
<result column="dev_level" property="devLevel" jdbcType="VARCHAR" />
<result column="dev_work_year" property="devWorkYear" jdbcType="VARCHAR" />
<result column="dev_in_year" property="devInYear" jdbcType="VARCHAR" />
resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from tb_dever
where dev_id = #{devId,jdbcType=INTEGER}
delete>
<insert id="insert" parameterType="com.mhys.crm.entity.TbDever" >
insert into tb_dever (dev_id, dev_name, dev_level,
dev_work_year, dev_in_year)
values (#{devId,jdbcType=INTEGER}, #{devName,jdbcType=VARCHAR}, #{devLevel,jdbcType=VARCHAR},
#{devWorkYear,jdbcType=VARCHAR}, #{devInYear,jdbcType=VARCHAR})
insert>
<update id="updateByPrimaryKey" parameterType="com.mhys.crm.entity.TbDever" >
update tb_dever
set dev_name = #{devName,jdbcType=VARCHAR},
dev_level = #{devLevel,jdbcType=VARCHAR},
dev_work_year = #{devWorkYear,jdbcType=VARCHAR},
dev_in_year = #{devInYear,jdbcType=VARCHAR}
where dev_id = #{devId,jdbcType=INTEGER}
update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select dev_id, dev_name, dev_level, dev_work_year, dev_in_year
from tb_dever
where dev_id = #{devId,jdbcType=INTEGER}
select>
<select id="selectAll" resultMap="BaseResultMap" >
select dev_id, dev_name, dev_level, dev_work_year, dev_in_year
from tb_dever
<where>
<if test="devLevel!=null and devLevel!=''">
and dev_level = #{devLevel}
if>
<if test="keyword!=null and keyword!=''">
and dev_work_year > #{keyword}
if>
where>
select>
mapper
原文:https://blog.csdn.net/weixin_44893902/article/details/121441598