一 、项目准备

项目分层

  • action 层:数据交互;
  • service 层:访问数据库表的服务类,供 action 调用;
  • dao 层:各实体对象执行数据操作
  • db 层:执行 sql 代码
  • entity 层:对变量的 get./set 封装

项目根据原先的物流管理进行重写,之前是使用的servlet进行编写的,现在使用SSM相关的技术进行实现这个项目。servlet实现 单击前往

且是使用eclipes进行编写的,没有使用maven仓库。

二 、数据库的创建

在这里就不过多的累述了,在上面的那篇文章当中是有给出相关的数据库创建的代码,在这里使用的是同一个数据库。建库语句及相关建表等语句如下所示:(这里使用的是mysql数据库,不同的数据库语句有些许出入)

#该库用于 javaweb 物流管理系统项目
CREATE DATABASE datadb
USE `datadb`
#创建用户信息表
CREATE TABLE IF NOT EXISTS user_pass(
user_name CHAR(10) NOT NULL,
pass CHAR(20) NOT NULL,
Firstname CHAR(20) NOT NULL,
Lastname CHAR(20) NOT NULL,
addr CHAR(50) NOT NULL,
PRIMARY KEY(user_name)
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
#给该表插入一条默认数据,作为初始的账号密码
INSERT INTO user_pass VALUES('admin','123456','jack','Smith','湖南省长沙市雨花区香樟路 22 号');
#查询该表的所有数据
SELECT * FROM `user_pass`
#创建一个订单表
CREATE TABLE IF NOT EXISTS t_dingdan(
td_id INT NOT NULL AUTO_INCREMENT,#给 id 这一列加上一个自增
goods_name CHAR(10) NOT NULL,#货物名称
goods_number CHAR(10) NOT NULL,#货物数量
goods_baozhuang CHAR(10) NOT NULL,#货物包装
goods_weight CHAR(10) NOT NULL,#货物重量
goods_volume CHAR(10) NOT NULL,#货物体积
fahuo_person CHAR(10) NOT NULL,#发货人
shouhuo_person CHAR(10) NOT NULL,#收货人
fahuo_date DATE NOT NULL,#发货日期
fahuo_addr CHAR(10) NOT NULL,#发货地
shouhuo_addr CHAR(10) NOT NULL,#目的地
tuoyun_money CHAR(5) NOT NULL,#托运费
shonghuo_money CHAR(5) NOT NULL,#送货费
baoxian_money CHAR(5) NOT NULL,#保险费
jiehuo_money CHAR(5) NOT NULL,#接货费
pay_money CHAR(10) NOT NULL,#支付方式
pick CHAR(10) NOT NULL,#取货方式
single CHAR(10) NOT NULL,#制单
PRIMARY KEY (td_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

及字段所代表的含义如下图所示:

三 、数据库连接及其相关方法实现 SpringJDBC

3.1 添加配置文件

数据库的连接使用Spring的jdbc进行连接。导入spring相关包以及数据库连接包mysql-connector-java-8.0.19.jar。相关的jar包导入之后,在src目录下添加配置文件applicationContext.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:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd"><!-- 1.配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--数据库驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver" /><!--连接数据库的url --><property name="url" value="jdbc:mysql://localhost/datadb?serverTimezone=UTC" /><!--连接数据库的用户名 --><property name="username" value="root" /><!--连接数据库的密码 --><property name="password" value="root" /></bean><!-- 2.配置JDBC模板 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!-- 默认必须使用数据源 --><property name="dataSource" ref="dataSource" /></bean>
</beans>

创建一个测试类 SpringDB 进行测试是否可以连接成功

public class SpringDB {public static void main(String[] args) {// 加载配置文件ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取JdbcTemplate实例JdbcTemplate jdTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");System.out.println("连接成功");}

3.2 相关实体类的定义及接口的定义

在实现方法之前,我们先构建一个实体类 Applicant,把数据库当中使用到的字段都放在这个类当中并且对这些属性进行 getset 封装。下列代码省略了getset封装以及部分字段。(避免文章的篇幅过于冗长)

 private String user_name ; // 账号private String pass; // 密码private String Firstname;// 名private String Lastname;// 姓private String addr;// 地址private String pageNo;// 页面编码private int id;// id编号private int td_id;// 订单id

再者定义一个接口 ApplicantDao,在接口当中写出这个项目可能会用到的相关方法,

public interface ApplicantDao {// 带参数的查询public ResultSet search(String sql, Object... obj);// 通过id查询public Applicant findApplicantById(int id);// 查询所有账户及其密码public List<Applicant> findAllApplicant();//获取所有数据的总和public int GetAll();// 增删改通用方法 insert delete update都是一个方法public int update(String sql, Object... obj);
}

随后使用一个服务类 ApplicantService 进行对接口实现,即实现接口当中的方法。声明JdbcTemplate属性及其setter方法,
第一个:查询所有账户及其密码

@Overridepublic List<Applicant> findAllApplicant() {String sql = "select * from user_pass";// 创建一个新的BeanPropertyRowMapper对象RowMapper<Applicant> rowMapper = new BeanPropertyRowMapper<Applicant>(Applicant.class);// 执行静态的SQL查询,并通过RowMapper返回结果return this.jdbcTemplate.query(sql, rowMapper);}

第二个:查询一个表当中有多少条的数据

@Overridepublic int GetAll() {String sql = "select count(*) from t_dingdan ";return this.jdbcTemplate.queryForObject(sql, Integer.class);}

在这里就会有一个版本相关的问题吧,在spring3.2.2支持 queryForInt(String) 方法,但spring4.2.0不支持这个方法,他只支持 queryForObject(String sql, class requiredType) 这个方法。所以你的jar包是支持queryForInt方法的话可以直接使用这条语句:

Integer num = jdbcTemplate.queryForInt(sql);

编写了两个方法之后也进行测试一下吧,在前面那个连接数据库的这个类当中进行测试
使用以下代码对这两个方法进行测试:放在main方法当中,运行java代码查看结果(注:数据表当中需要有数据)

 ApplicantDao ApplicantDao = (ApplicantDao) ac.getBean("ApplicantDao");//进行测试,获取用户表所有数据List<Applicant> appList  = ApplicantDao.findAllApplicant();for (Applicant applicant : appList) {System.out.println(applicant);}//测试获取订单表的总条数int num = ApplicantDao.GetAll();System.out.println(num);

测试结果如下图所示:


在这里就可以获取到数据了,其余方法使用相同的代码进行实现。

3.3 控制器类对路由实现

第一,先读取相关的配置文件,并且定义对应的方法,

 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");JdbcTemplate jdTemplate = (JdbcTemplate) ac.getBean("jdbcTemplate");System.out.println("连接成功");ApplicantDao ApplicantDao = (ApplicantDao) ac.getBean("ApplicantDao");

使用SpringMVC当中的控制器进行实现:参考此文:单击前往。 下图为登录的方法整体逻辑实现,先获取jsp页面当中的用户输入,再去到数据库当中进行查询。再决定跳转的目标页面。


在这里进行页面跳转的时候,在配置文件当中还需要对springmvc进行配置,防止其对css等文件拦截,使用下述代码段。

 <mvc:resources location="/css/" mapping="/css/**" /> <!-- 样式 --><mvc:resources location="/images/" mapping="/images/**" /> <!-- 图片 --><mvc:resources location="/js/" mapping="/js/**" /> <!-- javascript -->

而后续Java代码的实现跨越参考由javaweb 的 servlet 修改过来,基本逻辑不变。

四 、使用Mybatis对SpringJDBC进行抽离

4.1 mybatis的基本配置

参考此文(MyBatis的第一个程序测试),在这不过多赘述。

4.2 mybatis的相关的查询语句

参考此文(MyBatis的增删改操作 insert update delete)

4.3 数据封装

对配置文件都配置完成之后同理需要进行测试,在这里使用一个Load类进行用于测试,也相当于把这个加载Mybatis当中的语句进行抽离出来,减少控制器代码长度。


简单的实现,之后我们在控制器当中对原先使用SpringJDBC的代码进行注释,替换上MyBatis实现的代码,先创建这个Load类对象,之后通过对象条用所对应的方法。


在这里的mybatis的实现过程中,在有where子句且条件为user_name为?的时候,在传入一个String对象任然会报错,在这里我们使用字符串拼接,给字符串加上单引号即可。

至此整个javaweb项目修改完成,这样就是一个有SSM实现的javaweb项目了。

SSM项目实战 —— 物流管理系统的实现相关推荐

  1. SSM项目实战:酒店管理系统

    使用的技术栈:Spring+SpringMVC+mybatis+Mysql+layui+Maven Maven 项目结构.项目配置项为: 服务器:apache-tomcat-9.0.0.M26 (必须 ...

  2. java项目-第122期ssm校园快递物流管理系统-计算机毕业设计项目

    java项目-第122期ssm校园快递物流管理系统-计算机毕业设计项目 [源码请到资源专栏下载] Hi,大家好,今天分享的源码是<ssm校园快递物流管理系统>. 这款系统分为三个角色:管理 ...

  3. 基于SSM实现的物流管理系统【附源码】(毕设)

    一.项目简介 本项目是一套基于SSM实现的物流管理系统 或 物流配送系统 或 快递物流系统 或 快递管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者. 详细介绍了物 ...

  4. 基于SSM实现的物流管理系统(完美运行,包含数据库源代码,可远程调试)

    文章目录 前言 一.技术实现 二.系统功能 三.系统登陆界面 四.管理员界面 五.员工界面 六.客户界面 总结 前言 本项目是一套基于SSM实现的物流管理系统 或 物流配送系统 或 快递物流系统 或 ...

  5. 基于javaweb+SSM校园快递物流管理系统

    基于javaweb+SSM校园快递物流管理系统 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 <if te ...

  6. SSM项目-商城后台管理系统

    SSM项目-商城后台管理系统 开发说明 开发环境 项目界面演示 项目功能 具体的技术指标 开发过程 1.搭建SSM框架 1.1.建库建表 1.2.新建Maven工程 1.3.配置pom.xml 1.4 ...

  7. 基于SSM实现的物流管理系统|快递管理系统

    <SSM实现的物流管理系统>该项目采用的技术实现如下 后台框架:Spring.SpringMVC.MyBatis UI界面:jQuery .JSP.EasyUI 数据库:MySQL 系统主 ...

  8. Java项目实战---歌曲管理系统

    Java项目实战-歌曲管理系统 声明:本人仅整理了代码,方便大家进行调试优化,功能上还存在很多纰漏,欢迎大家评论区讨论 代码原地址放于文章末尾 一.实验目的: 掌握类的定义,JAVA应用程序的设计与实 ...

  9. Vue项目实战 —— 后台管理系统( pc端 ) 第三篇

    ​前期回顾    ​  Vue项目实战 -- 后台管理系统( pc端 ) 第二篇_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 后台管理系统( pc端 ) 第一篇 _0.活在风浪里 ...

  10. Vue项目实战 —— 后台管理系统( pc端 ) 第一篇

    前期回顾     我只写注释 -- 让Ai写代码_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 哔哩哔哩移动端开发-- 第二篇_0.活在风浪里的博客-CSDN博客https://b ...

最新文章

  1. 目标检测 | 盘点目标检测中的特征融合技巧(根据YOLO v4总结)
  2. java如何用c 的方法_JAVA如何调用C/C++方法
  3. java点到直线的投影点到经纬度_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...
  4. BZOJ 1014 火星人prefix
  5. C_Free引用链接库
  6. Bootloader概述
  7. matlab产生mif 文件,生成.mif文件的matlab程序
  8. ios 获取是否静音模式_高效人士进阶-IOS
  9. 一事无成,感觉自己是个 loser
  10. 这可能是最简单易懂的机器学习入门(小白必读)
  11. 阿兹卡塔防 Azgard Defense 详细攻略
  12. Chia命令行P图工具
  13. 微信开放平台PC端扫码登录功能个人总结
  14. JAVA实现手机短信验证码在指定有效的时间里校验
  15. IT通过什么途径去美国工作?
  16. python文献翻译_英文学术文献翻译软件有哪些推荐?
  17. 【SEED Lab】ARP Cache Poisoning Attack Lab
  18. css学习--css基础
  19. E盘里多了个ppsds.pgf文件是怎么回事?
  20. Code for fun (1)

热门文章

  1. 谐波平衡 matlab,解非线性振动问题的摄动谐波平衡法
  2. 差分编码 matlab,差分编码FSK调制解调matlab源程序.doc
  3. 政府黑客使用无文件技术投放远程控制木马
  4. 关于如何查找和利用PCL库学习资源的一些心得
  5. WEBMAX函数 动态模糊特效【官方教程】
  6. 计算机青蓝云题库,计算机三级上机题库 计算机三级网络技术上机题库《南开100题》.doc...
  7. Unity PID 控制算法可视化学习
  8. 天大2021年秋学期考试《画法几何及工程制图》离线作业考核试题
  9. 师慧gis三维虚拟校园在高校教学管理中的应用价值
  10. 系统垃圾清理 bat文件