# commodity-management
简易商品管理系统
---------
这个说明文档没怎么排版,可以到[我的博客](https://niantianlei.github.io/2017/11/05/commodity-management/)查看!
一个简单的商品管理的系统,使用的技术有:Maven+Spring+SpringMVC+MyBatis,前端框架boostrap。数据库使用mysql。
用到两个表:一个商品信息表,一个种类表。使用外键关联将两个表联结起来。
完整代码已上传github,地址为[https://github.com/niantianlei/commodity-management](https://github.com/niantianlei/commodity-management)
欢迎`fork`以及`star`
<hr />
## 实现的功能
1. 利用PageHelper插件分页显示数据
2. 新增商品数据
其中商品名、货号需要检测格式是否符合要求以及数据库中是否存在,这里用到js正则表达式、JSR303。
3. 修改商品信息
修改需要根据欲修改的商品'id'从数据库中查找,返回相应的信息
4. 删除
删除可以删除单条商品数据,也可以多选删除
## SSM整合
[上一篇博客](https://niantianlei.github.io/2017/10/13/SSM/)已经有了这部分的介绍,只是添加jar包的方式不一样(一个手动添加一个Maven管理),配置文件是不变的,代码中也有详细注释。这里只做简单说明
`pom.xml`文件管理项目依赖的jar包,各个包的作用见注释。
`web.xml`配置Spring、前端控制器、过滤器等。前端控制器的init-param属性指定SpringMVC配置文件的位置,可以删除(不指定),此时需在web.xml统计目录创建名为servlet-name属性值-servlet(如:dispatcherServlet-servlet.xml)的配置文件。
`dispatcherServlet-servlet.xml`SpringMVC的配置文件,扫描注释为@controller的控制器,配置视图解析器等。
`applicationContext.xml`Spring配置文件,配置数据库,与MyBatis整合,配置事务等,需扫描除控制器之外的文件。
`mybatis-config.xml`也可放在Spring的bean里。
## MyBatis逆向工程
利用MyBatis生成对应的pojo、dao类及其映射文件,可参考[之前的博客](https://niantianlei.github.io/2017/10/10/Mybatis6/),
以及[官方文档](http://www.mybatis.org/generator/quickstart.html)
首先,在MySQL中新建数据库,然后建表,sql脚本也放在了项目中了。
新建一个`generatorConfig.xml`官方文档中有示例可直接复制过来,然后进行一些配置修改。
采用Java结合配置文件进行生成的方法,[Java执行示例](http://www.mybatis.org/generator/running/runningWithJava.html)链接里面的代码可以直接拿过来,改下配置文件的路径、名字,直接运行即可。
完成后刷新,可看到文件已生成。
## 修改dao层文件
使用mybatis生成的文件不一定就能满足我们的需求,可以在其基础上进行更改,实现需要的功能。
此项目中,在查询商品时需要将种类表的信息也查询出来,这样才是完整信息。但是逆向工程只是生成单表操作,所以需要自己添加查询语句。
1. bean文件`Products.java`中添加种类字段信息`private Category category;`,并生成getter和setter
2. 在`ProductsMapper.java`接口中添加两个方法selectByExampleWithCate和selectByPrimaryKeyWithCate,表示同时查询种类信息。
3. 修改映射文件`ProductsMapper.xml`添加联表查询sql语句,详细代码见github仓库,比较简单,不必细说。
**需要注意的就是:**最一开始我没有在查询信息时排序,导致在页面插入商品时在最后找不到,仔细看了下,是插在了中间。也就是说没有按主键id排序,所以添加了如下代码:
```
<!-- 如果未指定查询顺序,则以prducts表的主键id排序 -->
<if test="orderByClause == null">
order by e.pro_id
</if>
```
## dao层测试
在com.nian.test包下新建一个类MapperTest.java,注解`@RunWith(SpringJUnit4ClassRunner.class)`表示是在Spring上下文中进行测试,`@ContextConfiguration`找到Spring配置文件
直接用`@Autowired`注入一个CategoryMapper。
再调用其方法insertSelective插入种类数据(为方便初始化数据,可以在bean里添加有参构造器,但同时要写上无参构造器)。
此时可以去数据库中查看是否已将数据添加,来检验到目前为止的工作是否正确。
<img src="http://chuantu.biz/t6/135/1510280933x3396406237.png" />
成功显示数据。
插入商品数据测试:
利用for循环批量插入,使用UUID设置货号信息,保证随机性。
可以在Spring配置文件中配置一个批量执行任务的sqlSession,然后通过`@Autowired`注入。
## 页面搭建
使用boostrap框架的[栅格系统](http://v3.bootcss.com/css/#grid),快速搭建好一个大致轮廓,根据使用手册慢慢弄,我写前端就是多试,多调,不断查看效果,满意为止。
前端的内容就不具体说明了,框架使用很简单。
## 功能实现
使用RESTful(表现层状态转化)风格的URI,将页面普通的post请求转为指定的delete或者put请求。
HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来查询商品数据,POST用来新建资源(也可以用于更新资源),PUT用来修改数据,DELETE用来删除商品。
页面获取数据的形式:客户端(浏览器等)向服务器发送ajax请求,然后服务端返回一个JSON,利用js解析JSON就可以获得我们需要的数据。下面详细说明
#### 查询
查询时,首先访问index.jsp页面,页面会发送ajax请求查询数据,ProductsController接受请求,查出数据,转化为JSON格式传到页面,页面进行解析展示。
分页使用pageHelper插件,[使用文档](https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md)。
index.jsp发送ajax请求进行数据查询,服务端返回JSON,解析之后使用dom将数据填充到页面中或改变页面。
新建一个控制器ProductsController.java,编写方法
```
@RequestMapping("/pros")
@ResponseBody
public Msg getProductsWithJson(
@RequestParam(value = "pn", defaultValue = "1") Integer pn) {
// 利用PageHelper插件进行分页查询
// 输入页码以及每页的数据量
PageHelper.startPage(pn, 7);
// 这里顺序是不能乱的,必须先调用方法startPage然后在查询
List<Products> pros = productsService.getAll();
// 用pageInfo封装查询结果,然后将其传给页面
// 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
PageInfo page = new PageInfo(pros, 5);
return Msg.success().add("pageInfo", page);
}
```
`@ResponseBody`表示将返回对象转为JSON字符串
`@RequestMapping("/pros")`表示处理请求地址映射的注解,也就是遇到pros请求会调用该方法
`@RequestParam(value = "pn", defaultValue = "1")`表示传入参数,也就是查询的页码
productsService是自动注入的ProductsService实例,其getAll方法用来调用dao层方法实现数据的查询操作。
将查询结果封装到PageInfo对象中,
另外新建一个标志类Msg.java识别请求是否成功,用一个Map保存数据返回给浏览器。将Msg作为一个通用的返回类型。
在index.jsp中编写ajax请求
```
function to_page(pn){
$.ajax({
url:"${APP_PATH}/pros"
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。
资源推荐
资源详情
资源评论
收起资源包目录
简易商品管理系统.zip (87个子文件)
SJT-code
.classpath 1KB
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.jdt.core.prefs 430B
org.eclipse.core.resources.prefs 231B
.jsdtscope 639B
org.eclipse.wst.validation.prefs 50B
org.eclipse.wst.common.component 701B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.m2e.core.prefs 90B
pom.xml 6KB
src
main
resources
mapper
CategoryMapper.xml 6KB
ProductsMapper.xml 11KB
logback.xml 497B
dbconfig.properties 138B
mybatis-config.xml 569B
commodity_management.sql 2KB
applicationContext.xml 4KB
java
com
nian
controller
ProductsController.java 6KB
CategoryController.java 804B
dao
ProductsMapper.java 1004B
CategoryMapper.java 875B
service
CategoryService.java 468B
ProductsService.java 2KB
test
MBGTest.java 1KB
MapperTest.java 2KB
bean
Products.java 3KB
ProductsExample.java 21KB
CategoryExample.java 10KB
Msg.java 1015B
Category.java 625B
webapp
WEB-INF
web.xml 3KB
dispatcherServlet-servlet.xml 1KB
views
list.jsp 4KB
index.jsp 21KB
json2.jsp 134B
json1.jsp 133B
static
js
jquery-1.12.4.min.js 95KB
bootstrap-3.3.7-dist
js
bootstrap.js 68KB
npm.js 484B
bootstrap.min.js 36KB
css
bootstrap-theme.min.css.map 25KB
bootstrap.min.css 118KB
bootstrap-theme.css.map 47KB
bootstrap-theme.css 26KB
bootstrap.css.map 380KB
bootstrap.css 143KB
bootstrap-theme.min.css 23KB
bootstrap.min.css.map 529KB
fonts
glyphicons-halflings-regular.svg 106KB
glyphicons-halflings-regular.ttf 44KB
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.woff2 18KB
META-INF
MANIFEST.MF 39B
generatorConfig.xml 2KB
target
classes
mapper
CategoryMapper.xml 6KB
ProductsMapper.xml 11KB
logback.xml 497B
dbconfig.properties 138B
mybatis-config.xml 569B
commodity_management.sql 2KB
applicationContext.xml 4KB
com
nian
controller
ProductsController.class 6KB
CategoryController.class 1KB
dao
CategoryMapper.class 978B
ProductsMapper.class 1KB
service
CategoryService.class 934B
ProductsService.class 3KB
test
MapperTest.class 2KB
MBGTest.class 2KB
bean
CategoryExample$GeneratedCriteria.class 6KB
CategoryExample$Criterion.class 2KB
ProductsExample.class 2KB
Msg.class 2KB
ProductsExample$Criteria.class 9KB
CategoryExample$Criteria.class 3KB
Category.class 1KB
ProductsExample$GeneratedCriteria.class 15KB
CategoryExample.class 2KB
Products.class 3KB
ProductsExample$Criterion.class 2KB
m2e-wtp
web-resources
META-INF
MANIFEST.MF 113B
maven
com.nian
commodity-management
pom.properties 254B
pom.xml 6KB
.project 1KB
README.md 17KB
共 87 条
- 1
资源评论
JJJ69
- 粉丝: 6222
- 资源: 5780
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功