基于Spring MVC + Spring + MyBatis的【银行卡系统】
资源下载:https://download.csdn.net/download/weixin_44893902/45604256
练习点设计: 删除、新增
一、语言和环境
- 实现语言:JAVA语言。
- 环境要求:MyEclipse/Eclipse + Tomcat + MySql。
- 使用技术:
Jsp
+Servle
t+JavaBean
或SpringMVC
+Spring
+Mybatis
。
二、实现功能
随着银行卡越来越多,办卡人员日益增多,特需要银行卡系统:
1.首页默认显示所有银行卡信息,默认按照银行卡余额升序,如图1所示。
2.用户点击删除,则弹出提示框,用户点击确定后,删除选中数据并显示最新数据,如图3和图4所示。
3.用户点击“添加银行卡”操作链接,跳转到银行卡添加界面,填写完相关信息后点击添加按钮,增加银行卡信息数据到数据库,且页面跳转到列表页面展示最新数据,如图6和图7所示。
三、数据库设计
1.创建数据库(card_db)。
2.创建数据表(tb_card),结构如下。
字段名 | 说明 | 字段类型 | 长度 | 备注 |
---|---|---|---|---|
id | 编号 | int | 主键,自增,增量为1 | |
name | 持卡人姓名 | varchar | 50 | 不能为空 |
sex | 持卡人性别 | Char | 1 | 不能为空 |
cardNo | 卡号 | int | 不能为空 | |
balance | 银行卡余额 | Double | 不能为空 | |
level | 银行卡级别 | int | 1普卡 2 白金卡 3黑卡 |
四、推荐实现步骤
1.JSP版本的实现步骤如下:
(1)按以上数据库要求建库、建表,并添加测试数据。
(2)创建Web工程并创建各个包,导入工程所需的jar文件。
(3)创建实体类。
(4)创建Servlet获取用户不同的请求,并将这些请求转发至业务处理层相应的业务方法。
(5)创建业务处理层,在其中定义业务方法实现系统需求,在这些业务方法中需要执行DAO方法。
(6)创建BaseDAO工具类,使用JDBC完成数据表数据的查询、删除和添加。
(7)编写JSP页面,展示数据的查询结果。
2.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数据库
card_db
2、项目Java代码
目录结构
Card
JAR包:
src
com.mhys.crm.controller
CardContrtoller.java
package com.mhys.crm.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.mhys.crm.entity.TbCard;
import com.mhys.crm.service.impl.CardService;@Controller
public class CardContrtoller {@ResourceCardService cardService;// 查询方法@RequestMapping("/cardsList")public String cardsList(Model model) {List<TbCard> cardList = cardService.selectAll();model.addAttribute("cardList", cardList);return "/card";}// 跳转添加页面的方法@RequestMapping("/insertInto")public String insert() {return "addCard";}// 添加方法@RequestMapping("/insertCard")public String insertCard(TbCard tbCard) {int insertCard = cardService.insertCard(tbCard);return "redirect:/cardsList.do";}// 删除方法@RequestMapping("/deleteCard")public String deleteCard(int id) {int deletCard = cardService.deleteCard(id);return "redirect:/cardsList.do";}}
com.mhys.crm.dao
TbCardMapper.java
package com.mhys.crm.dao;import java.util.List;import com.mhys.crm.entity.TbCard;public interface TbCardMapper {int deleteByPrimaryKey(Integer id);int insert(TbCard record);List<TbCard> selectAll();}
TbCardMapper.xml
<?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.mhys.crm.dao.TbCardMapper"><resultMap id="BaseResultMap" type="com.mhys.crm.entity.TbCard"><id column="id" property="id" jdbcType="INTEGER" /><result column="name" property="name" jdbcType="VARCHAR" /><result column="sex" property="sex" jdbcType="VARCHAR" /><result column="cardNo" property="cardno" jdbcType="VARCHAR" /><result column="balance" property="balance" jdbcType="VARCHAR" /><result column="level" property="level" jdbcType="VARCHAR" /></resultMap><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">delete from tb_cardwhere id = #{id,jdbcType=INTEGER}</delete><insert id="insert" parameterType="com.mhys.crm.entity.TbCard">insert into tb_card (id, name, sex,cardNo, balance, level)values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR},#{sex,jdbcType=VARCHAR},#{cardno,jdbcType=VARCHAR}, #{balance,jdbcType=VARCHAR}, #{level,jdbcType=VARCHAR})</insert><select id="selectAll" resultMap="BaseResultMap">select id, name, sex, cardNo, balance, levelfrom tb_card</select>
</mapper>
com.mhys.crm.entity
TbCard.java
package com.mhys.crm.entity;public class TbCard {private Integer id;private String name;private String sex;private String cardno;private String balance;private String level;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 String getSex() {return sex;}public void setSex(String sex) {this.sex = sex == null ? null : sex.trim();}public String getCardno() {return cardno;}public void setCardno(String cardno) {this.cardno = cardno == null ? null : cardno.trim();}public String getBalance() {return balance;}public void setBalance(String balance) {this.balance = balance == null ? null : balance.trim();}public String getLevel() {return level;}public void setLevel(String level) {this.level = level == null ? null : level.trim();}
}
com.mhys.crm.service.impl
CardService.java
package com.mhys.crm.service.impl;import java.util.List;import com.mhys.crm.entity.TbCard;public interface CardService {//查询List<TbCard> selectAll();//添加int insertCard(TbCard tbCard);//删除int deleteCard(int id);}
CardServiceImpl.java
package com.mhys.crm.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.mhys.crm.dao.TbCardMapper;
import com.mhys.crm.entity.TbCard;
@Service
public class CardServiceImpl implements CardService {@Resource TbCardMapper mapper;@Overridepublic List<TbCard> selectAll() {List<TbCard> selectAll=mapper.selectAll();return selectAll;}@Overridepublic int insertCard(TbCard tbCard) {int addCard=mapper.insert(tbCard);return addCard;}@Overridepublic int deleteCard(int id) {int delCard=mapper.deleteByPrimaryKey(id);return delCard;}}
mybatis
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="com.mhys.crm.entity"/></typeAliases></configuration>
spring
applicationContext-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- 指定spring容器读取database.properties文件 --><context:property-placeholder location="classpath:database.properties" /><!-- 将连接池注册到bean容器中 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!-- 配置SqlSessionFactory --><bean class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 设置MyBatis核心配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /><!-- 设置数据源 --><property name="dataSource" ref="dataSource" /></bean><!-- 配置Mapper扫描 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 设置Mapper扫描包 --><property name="basePackage" value="com.mhys.crm.dao" /></bean></beans>
applicationContext-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- 配置Service扫描 --><context:component-scan base-package="com.mhys.crm" /><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 开启注解方式管理AOP事务 --><tx:annotation-driven transaction-manager="transactionManager" />
</beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"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.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 配置Controller扫描 --><context:component-scan base-package="com.mhys.crm" /><!-- 配置注解驱动 --><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>
jdbc.properties
jdbc.url=jdbc:mysql://localhost:3306/card_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.jdbc.Driver
WebContent
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>Card</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
JSP
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XXX系统</title>
</head>
<body>
<script>window.location.href="<%=basePath%>/cardsList.do";
</script>
</body>
</html>
addCard.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<head>
<meta charset="utf-8">
<title>录入信息</title>
<style type="text/css">
table {margin: auto;text-align: center;
}.button {margin: auto;
}
</style>
</head>
<body><form action="insertCard.do"><table border="1" cellspacing="0" cellpadding="5"><tr><tdstyle="background-color: #42B983; color: white; text-align: center;"colspan="2">新增银行卡信息</td></tr><tr><td width="450px"><input type="hidden" name="id"value="${card.id}"> 办卡人姓名</td><td width="450px"><input type="text" name="name"value="${card.name}"></td></tr><tr><td width="450px">办卡人性别</td><td width="450px"><input type="radio" name="sex" value="1"<c:if test="${card.sex==1}">checked="checked"</c:if>>男 <inputtype="radio" name="sex" value="0"<c:if test="${card.sex!=1}">checked="checked"</c:if>>女</td></tr><tr><td width="450px">生成卡号</td><td width="450px"><input type="text" name="cardno"value="${card.cardno}"></td></tr><tr><td width="450px">余额</td><td width="450px"><input type="text" name="balance"value="${card.balance}"></td></tr><tr><td width="450px">银行卡级别</td><td width="450px"><select name="level"><option name="level" value="普通卡">普通卡</option><option name="level" value="白金卡">白金卡</option><option name="level" value="黑卡">黑卡</option></select></td></tr><tr><td width="450px" colspan="2" style="text-align: center;"><inputstyle="background-color: #42B983; color: white;" type="submit"value="添加" /></td></tr></table></form>
</body>
</html>
card.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<head>
<meta charset="utf-8">
<title>银行卡系统</title><style type="text/css">
h2 {position: relative;left: 40%;
}table {text-align: center;
}.foot {margin-right: 100px;float: right;
}tr:hover {background: #EEEEEE;
}a {text-decoration: none;
}p {text-align: right;
}
</style>
</head>
<body><h2>银行卡列表</h2><form action="cardsList.do" method="post"><table width="100%" border="1px" cellpadding="5" cellspacing="0"><tr style="background-color: #42B983; color: white"><th width="80px">银行卡序号</th><th width="150px">持卡人姓名</th><th width="150px">持卡性别</th><th width="150px">银行卡卡号</th><th width="150px">银行卡余额</th><th width="150px">银行卡级别</th><th width="160px">操作</th></tr><c:forEach var="card" items="${cardList }" varStatus="item"><tr><td width="80px">${card.id}</td><td width="150px">${card.name}</td><td width="150px"><c:if test="${card.sex==1}">男</c:if> <c:if test="${card.sex!=1}">女</c:if></td><td width="150px">${card.cardno}</td><td width="150px">¥${card.balance}</td><td width="150px">${card.level}</td><td width="160px"><ahref="javascript:if(confirm('确实删除银行卡信息?'))location='deleteCard.do?id=${card.id}'">删除</a></td></tr></c:forEach></table><p><a href="insertInto.do">添加银行卡</a></p></form>
</body>
</html>
基于Spring MVC + Spring + MyBatis的【银行卡系统】相关推荐
- Java泛型之mybatis,基于spring MVC 和 MyBatis 泛型的代码生成模板
原标题:基于spring MVC 和 MyBatis 泛型的代码生成模板 简单说明 这块代码生成工具是我抽空的时候方便自己使用而编写的,并不适合其他框架,这里由于项目原有,我并没有上传泛型部份的代码, ...
- Spring 5 + Spring MVC 5 + MyBatis 3 的 Maven 项目集成
相关链接: MyEclipse CI 2018.9.0 配置 Apache Maven 3.5.4 在MyEclipse CI 2018.9.0 中使用 Maven 3.5.4 创建Maven项目 在 ...
- Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建
目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis ...
- Spring mvc+ maven + MyBatis + Oracle + IDEA 项目搭建 - framework 进阶中(一)
原文链接 http://blog.csdn.net/qq184377902/article/details/51493642 结合自身情况加以修改搭建的框架,记录以防备忘,方便日后学习参考. Befo ...
- SSM框架实现用户查询、注册、登录——IDEA整合Spring、Spring MVC、Mybatis 框架
目录 零.前言 一.说明 1.整合说明 2.最终目标 3.数据库准备 二.搭建整合环境 1.创建 maven 工程 2.导入依赖坐标 3.创建java和resources文件夹 4.创建类和接口文件 ...
- Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解)(转载)
Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解) 前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将 ...
- spring mvc+spring+mybatis+ajax实现登录验证
<h1>Spring Mvc+Spring+Mybatis+Ajax 实现异步登录的例子,和大家分享一下.</h1><div>login.js代码:</div ...
- Spring Mvc + Spring + Mybatis3 搭建Web工程详解
Spring MVC + Spring + Mybatis3 搭建Web工程原理 可能需要用到参考: Maven创建web项目:http://blog.csdn.net/liangmaoxuan/ar ...
- Spring MVC + Spring + Hibernate + mysql 注册登陆入门实例
Spring MVC + Spring + Hibernate + mysql 注册登陆入门实例 (1) 结构 (说明目的是要做在线聊天室的,也包含登陆注册部分,先用这部分做个例子)开发环境用的是ST ...
- Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...
最新文章
- 杨老师课堂_Java核心技术下之控制台模拟记事本案例...
- Python_note6 组合数据类型+jieba库+文本词频统计
- python必背100代码-100行Python代码实现一款高精度免费OCR工具
- python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
- 详解在 Linux 启动时,如何自动执行命令或脚本
- 区分Activity的四种加载模式
- 数据告诉你,抖音是如何在半年之内逆袭的
- 简述yolo1-yolo3_使用YOLO框架进行对象检测的综合指南-第二部分
- 关于spring MVC 绑定json字符串与实体类绑定
- 显示器分辨率一直跳_2020如何选择适合自己的显示器?小白选购电脑显示器必看!...
- 大数据之-Hadoop3.x_MapReduce_自定义outputformat案例完善执行---大数据之hadoop3.x工作笔记0123
- JS数组关联查找的性能优化
- 机器学习FP、TP、FN、TN、sensitivity、specificity及代码实现
- 计算机网络首地址和末地址公式,计算机中的地址即为存储单元的编码,一个首地址为1000H,容量为16KB的存储区域,末地址为________H。...
- 注册页面案例-世纪佳缘
- appium自动化,appium元素定位
- MobileNet论文翻译
- PHP(TP5框架) 对接OSS
- 视频消音还能这样玩???
- 李航《统计学习方法》第2版 第10章 HMM实现分词(代码实现)