标签:名称 ali arch filter 技术 手动 support perl poj
Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (控制反转) 和 A面向切面编程)。Spring框架是个轻量级的Java EE框架,所谓轻量级,是指不依赖于容器就能运行的。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
作用于web层,相当于controller,与struts中的action一样,都是用来处理用户请求的。同时,相比于struts2来说,更加细粒度,它是基于方法层面的,而struts是基于类层面的。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Struts2 与 SpringMVC 的对比:
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Hibernate 和 MyBatis 的对比:
本项目将以购物为背景,主要包括商品信息及库存【因为想顺便学习一下事务的处理】、订单信息。下面将从数据库创建、项目结构说明、配置文件、业务代码等方面进行一步步说明。
1. 商品表
初始化表数据
2. 订单表
OK,至此表结构及初始化数据构建完成,下面说下基于Mavan的项目结构。
因为项目是使用maven来管理jar包的,先来贴一下,pom.xml的配置
pom.xml
为了避免学习小伙伴崇尚拿来主义【也就是去除了xmlns之类的东西】,这里只放项目依赖的jar包的dependencies;本案例将本着“需则用”的原则,避免在网上看到的各种乱七八糟的依赖都丢进来的情况,造成资源浪费和干扰阅读。
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
<dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.11 </version> </dependency> <!-- 1 .日志 slf4j--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version> 1.1 . 1 </version> </dependency> <!-- 2 .数据库连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version> 5.1 . 37 </version> <scope>runtime</scope> </dependency> <!-- 2 .数据库连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version> 0.9 . 1.2 </version> </dependency> <!-- 3 .MyBatis 以及 spring-mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version> 3.3 . 0 </version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version> 1.2 . 3 </version> </dependency> <!-- 4 .Servlet 相关依赖 --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version> 1.1 . 2 </version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version> 1.2 </version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version> 2.5 . 4 </version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version> 3.1 . 0 </version> </dependency> <!-- 5 .Spring --> <!-- 5.1 Spring核心 :core bean context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <!-- 5.2 Spring jdbc依赖,事务依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <!-- 5.3 Spring web依赖> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <!-- 5.4 Spring test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version> 4.1 . 7 .RELEASE</version> </dependency> <!-- 6 .redis客户端:Jedis【不使用的话可以直接去除】 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version> 2.7 . 3 </version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version> 1.0 . 8 </version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version> 1.0 . 8 </version> </dependency> <!-- 7 .工具类 --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version> 3.2 </version> </dependency> </dependencies> |
*项目结构图
src/test/java:用于junit的测试类 src/main/java:
dao:数据库处理
service:业务处理
enums:项目枚举
mapper:dao中方法对应mybatis映射文件,Sql就在这里面
web:控制器,controller
entity:项目中的实体类,如:商品类和订单类
jdbc.properties
logback.xml
这里直接用的是控制台输出,如果是生产环境,可以根据具体的需求进行配置。
mybatis-config
这里主要是MyBaties全局配置文件的配置,可以将一些类的别名、主键自增配置、驼峰命名规则配置等。
spring 相关配置文件
为了更加清晰的了解spring各个组件的作用,这里将数据源的配置、事务配置和视图解析器的配置分开来。
spring-dao.xml
这里面主要就是spring配置整合mybatis的具体过程,具体包括:
spring-service
实际的开发过程中事务一般都是在service层进行操作。因此用一个单独的spring-service.xml来进行事务的相关的配置
spring-web.xml
配置SpringMVC;需要说明一下,一般我们在实际的开发过程中,会配置json2map解析。这里没有用到就不贴出来,读者可以自行网上搜索一波。
web.xml
至此,所有的配置文件结束,下面将进行具体的代码环节
这里mapper中的xml文件就不贴了,自行脑补。。。。
实体类:包括商品和订单
商品类
订单类
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
|
/** * 订单信息类 * @author glmapper * */ public class OrderInfo { private String orderId; //订单ID private long goodsId; //商品ID private long userId; //用户ID private Date orderTime; //下单时间 public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this .orderId = orderId; } public long getGoodsId() { return goodsId; } public void setGoodsId( long goodsId) { this .goodsId = goodsId; } public long getUserId() { return userId; } public void setUserId( long userId) { this .userId = userId; } public Date getOrderTime() { return orderTime; } public void setOrderTime(Date orderTime) { this .orderTime = orderTime; } } |
OK,至此所有核心代码及配置文件罗列完毕;【mapper中的xml和具体的controller就不贴了,相信大家对这个也不陌生。本文主要意图在于梳理下自己学习中的一些点,SSM框架在实际的应用开发中还会有很多其他的开源技术结合进来,如:quartz,redis等。当前本文的列子就是一个空壳子,以备参考吧】
标签:名称 ali arch filter 技术 手动 support perl poj
原文地址:https://www.cnblogs.com/niudaxianren/p/9988024.html