小例子:用到spring单元测试,mybatis子查询,redis

可能做得没有那么好,但是我尽量去说清楚!!也是给自己一个态度    blessing

 

1.首先我们建立一个maven项目(记得选择war),在webapp下建立一个WEB-INF的包然后在建立一个web.xml文件

2.导入包,先把服务器tomcat导入,有几个要导入的包,如: spring-context,  spring-webmvc, spring-orm

 

因为spring的版本号必须要统一所以用这个可以管理spring的统一版本号 

 

4.1.6.RELEASE

这些是spring的包可能之后还需要导入别的包,不着急,我们之后再说,到了用的时候我们再导进来。。

还是需要导进来一些包,如: mysql, lombok, mybatismybatis-spring,  jstl, druid(druid这个是连接池)

 

3.首先这个diapatcherServlet的这个类名在spring-webmvc这个包里边的,记住复制这个全类名

   第二个这个contextConfigLocation这个是让它指定读配置文件,根目录下的mvc包里边的springmvc.xml文件

   然后在加一个load on startup这个让服务器启动的时候就读取这个文件

小例子:用到spring单元测试,mybatis子查询,redis_第1张图片

 

4.然后我们在配置一个post请求乱码过滤器 

这个类名在spring-web包下 复制这个CharacterEncodingFilter这个全类名

encoding和下边的forceEncoding都是这个类里边的属性,按照我这样配置就可以啦

小例子:用到spring单元测试,mybatis子查询,redis_第2张图片

 

5.然后我们再src/main/resources(这里边专门就是配置文件)这个下边加一个包mvc,里边建立springmvc.xml文件,然后我们进行配置

首先是加载注解驱动,然后扫包(然后在相应的类上加注解web层加@controller,    servive层上加@service,),springmvc,xml文件这个是扫web层的那个包,我们的建立的包名可能不一样

接下来就是配置视图解析器,这个也是在spring-webmvc包里边的

小例子:用到spring单元测试,mybatis子查询,redis_第3张图片

6.然后我们再src/main/java这个包里边在建立几个包,分别是:pojo(这里类是写属性和get set方法的) dao层(接口里边写方法的 与数据交互的层) service层(接口类里边与dao层的方法一样,接口的实现类里边用dao点方法) controller层(这里是进行显示页面增删改查的)

7.然后在web层建立一个相应的类,这个类刚开始进行一下测试,加上注解@controller和相应的@requestmapping(这个注解加相应的方法上)

小例子:用到spring单元测试,mybatis子查询,redis_第4张图片

 

 

8我们的目的是建立一个三级菜单联动表  然后我们再数据库sql里边需要建立一级,二级,三级表。例如360商城官网的表单,,,

小例子:用到spring单元测试,mybatis子查询,redis_第5张图片

小例子:用到spring单元测试,mybatis子查询,redis_第6张图片

三个表格建立好了,,,当然了我们建立这个三级表单我们现在先把表格的数据插入进去,如:

小例子:用到spring单元测试,mybatis子查询,redis_第7张图片

小例子:用到spring单元测试,mybatis子查询,redis_第8张图片

 

INSERT INTO `three` VALUES ('1', '360N6Lite', '1');
INSERT INTO `three` VALUES ('2', '360 N6', '1');
INSERT INTO `three` VALUES ('3', '360 N6Pro', '1');
INSERT INTO `three` VALUES ('4', '360F5', '1');
INSERT INTO `three` VALUES ('5', '手机壳膜', '2');
INSERT INTO `three` VALUES ('6', '数据线/充电器', '2');
INSERT INTO `three` VALUES ('7', '手机耳机', '2');
INSERT INTO `three` VALUES ('8', '苹果配件', '2');
INSERT INTO `three` VALUES ('9', '移动电源', '2');
INSERT INTO `three` VALUES ('10', '手机支架', '2');
INSERT INTO `three` VALUES ('11', '创意配件', '2');
INSERT INTO `three` VALUES ('12', '儿童手表', '3');
INSERT INTO `three` VALUES ('13', '行车记录仪', '3');
INSERT INTO `three` VALUES ('14', '智能摄像机', '3');
INSERT INTO `three` VALUES ('15', '路由器', '3');
INSERT INTO `three` VALUES ('16', '插线板', '3');
INSERT INTO `three` VALUES ('17', '故事机', '3');
INSERT INTO `three` VALUES ('18', '智能家居', '3');
INSERT INTO `three` VALUES ('19', '耳机耳麦', '4');
INSERT INTO `three` VALUES ('20', '音箱音响', '4');
INSERT INTO `three` VALUES ('21', '便携无线音箱', '4');
INSERT INTO `three` VALUES ('22', '麦克风', '4');
INSERT INTO `three` VALUES ('23', 'MP3/MP4', '4');
INSERT INTO `three` VALUES ('24', '平板电脑', '5');
INSERT INTO `three` VALUES ('25', '鼠标', '6');
INSERT INTO `three` VALUES ('26', '键盘', '6');
INSERT INTO `three` VALUES ('27', '键鼠套装', '6');
INSERT INTO `three` VALUES ('28', '游戏耳机', '6');
INSERT INTO `three` VALUES ('29', '手柄方向盘', '6');
INSERT INTO `three` VALUES ('30', '内存', '6');
INSERT INTO `three` VALUES ('31', '闪迪', '7');
INSERT INTO `three` VALUES ('32', '爱国者', '7');
INSERT INTO `three` VALUES ('33', '金士顿', '7');
INSERT INTO `three` VALUES ('34', '东芝', '7');
INSERT INTO `three` VALUES ('35', '三星', '7');
INSERT INTO `three` VALUES ('36', '希捷', '8');
INSERT INTO `three` VALUES ('37', '西部数据', '8');
INSERT INTO `three` VALUES ('38', '东芝', '8');
INSERT INTO `three` VALUES ('39', '闪迪', '9');
INSERT INTO `three` VALUES ('40', '三星', '9');
INSERT INTO `three` VALUES ('41', '金士顿', '9');
INSERT INTO `three` VALUES ('42', '净化器', '10');
INSERT INTO `three` VALUES ('43', '车载充电器', '10');
INSERT INTO `three` VALUES ('44', '胎压监测', '10');
INSERT INTO `three` VALUES ('45', '充气泵', '10');
INSERT INTO `three` VALUES ('46', '车载吸尘器', '10');
INSERT INTO `three` VALUES ('47', '蓝牙设备', '10');
INSERT INTO `three` VALUES ('48', '安全座椅', '11');
INSERT INTO `three` VALUES ('49', '保温箱', '11');
INSERT INTO `three` VALUES ('50', '储物箱', '11');
INSERT INTO `three` VALUES ('51', '防盗设备', '11');
INSERT INTO `three` VALUES ('52', '功能小件', '11');
INSERT INTO `three` VALUES ('53', '脚垫', '11');
INSERT INTO `three` VALUES ('54', '头枕腰靠', '11');
INSERT INTO `three` VALUES ('55', '坐垫', '11');
INSERT INTO `three` VALUES ('56', '摩托车装备', '11');
INSERT INTO `three` VALUES ('57', '香水', '11');
INSERT INTO `three` VALUES ('58', '应急救援', '11');
INSERT INTO `three` VALUES ('59', '自驾野营', '11');
INSERT INTO `three` VALUES ('60', '后视镜', '12');
INSERT INTO `three` VALUES ('61', '贴膜', '12');
INSERT INTO `three` VALUES ('62', '机油', '12');
INSERT INTO `three` VALUES ('63', '轮胎', '12');
INSERT INTO `three` VALUES ('64', '轮毂', '12');
INSERT INTO `three` VALUES ('65', '雨刷', '12');
INSERT INTO `three` VALUES ('66', '滤芯器', '12');
INSERT INTO `three` VALUES ('67', '蓄电池', '12');
INSERT INTO `three` VALUES ('68', '汽车工具', '12');
INSERT INTO `three` VALUES ('69', '刹车片', '12');
INSERT INTO `three` VALUES ('70', '变速箱油', '12');
INSERT INTO `three` VALUES ('71', '添加剂', '12');
INSERT INTO `three` VALUES ('72', '柴机油辅助油', '12');
INSERT INTO `three` VALUES ('73', '维修配件', '12');
INSERT INTO `three` VALUES ('74', '洗车机', '13');
INSERT INTO `three` VALUES ('75', '清洁剂', '13');
INSERT INTO `three` VALUES ('76', '车蜡', '13');
INSERT INTO `three` VALUES ('77', '玻璃水', '13');
INSERT INTO `three` VALUES ('78', '毛巾掸子', '13');
INSERT INTO `three` VALUES ('79', '剃须刀', '14');
INSERT INTO `three` VALUES ('80', '电吹风', '14');
INSERT INTO `three` VALUES ('81', '卷直发器', '14');
INSERT INTO `three` VALUES ('82', '剃脱毛器', '14');
INSERT INTO `three` VALUES ('83', '足浴盆', '14');
INSERT INTO `three` VALUES ('84', '按摩器', '14');
INSERT INTO `three` VALUES ('85', '吸尘器', '15');
INSERT INTO `three` VALUES ('86', '加湿器', '15');
INSERT INTO `three` VALUES ('87', '挂烫机', '15');
INSERT INTO `three` VALUES ('88', '电风扇', '15');
INSERT INTO `three` VALUES ('89', '除湿器', '15');
INSERT INTO `three` VALUES ('90', '电话机', '15');
INSERT INTO `three` VALUES ('91', '净化器', '15');
INSERT INTO `three` VALUES ('92', '料理机', '16');
INSERT INTO `three` VALUES ('93', '电水壶', '16');
INSERT INTO `three` VALUES ('94', '电饭煲', '16');
INSERT INTO `three` VALUES ('95', '微波炉', '16');
INSERT INTO `three` VALUES ('96', '帐篷/垫子', '17');
INSERT INTO `three` VALUES ('97', '望远镜', '17');
INSERT INTO `three` VALUES ('98', '烧烤用具', '17');
INSERT INTO `three` VALUES ('99', '便携桌椅', '17');
INSERT INTO `three` VALUES ('100', '野餐用品', '17');
INSERT INTO `three` VALUES ('101', '睡袋吊床', '17');
INSERT INTO `three` VALUES ('102', '乒乓球', '18');
INSERT INTO `three` VALUES ('103', '篮球', '18');
INSERT INTO `three` VALUES ('104', '足球', '18');
INSERT INTO `three` VALUES ('105', '滑轮滑板', '18');
INSERT INTO `three` VALUES ('106', '网球', '18');
INSERT INTO `three` VALUES ('107', '排球', '18');
INSERT INTO `three` VALUES ('108', '钓竿', '19');
INSERT INTO `three` VALUES ('109', '渔具包', '19');
INSERT INTO `three` VALUES ('110', '泳镜', '20');
INSERT INTO `three` VALUES ('111', '游泳圈', '20');
INSERT INTO `three` VALUES ('112', '游泳包防水包', '20');
INSERT INTO `three` VALUES ('113', '泳帽', '20');
INSERT INTO `three` VALUES ('114', '点读机', '21');
INSERT INTO `three` VALUES ('115', '早教益智', '21');
INSERT INTO `three` VALUES ('116', '录音笔', '21');
INSERT INTO `three` VALUES ('117', '电子词典', '21');
INSERT INTO `three` VALUES ('118', '复读机', '21');
INSERT INTO `three` VALUES ('119', '电纸书', '21');
INSERT INTO `three` VALUES ('120', '打印机耗材', '22');
INSERT INTO `three` VALUES ('121', '纸类', '22');
INSERT INTO `three` VALUES ('122', '文具', '22');
INSERT INTO `three` VALUES ('123', '文件管理', '22');
INSERT INTO `three` VALUES ('124', '本册便签', '22');
INSERT INTO `three` VALUES ('125', '笔类', '22');
INSERT INTO `three` VALUES ('126', '财会用品', '22');

这里是每个表格的相应的数据,这个想去实现联动的效果,如360商城那样,我们的基本思路就是让一级表的id成为二级表格的p_id,让二级的id成为三级表的p_id

所以我们看看这个效果:对应相应的表格一,二,三

 

小例子:用到spring单元测试,mybatis子查询,redis_第9张图片                小例子:用到spring单元测试,mybatis子查询,redis_第10张图片               

 

1 360N6Lite 1

 

2 360 N6 1
3 360 N6Pro 1
4 360F5 1
5 手机壳膜 2
6 数据线/充电器 2
7 手机耳机 2
8 苹果配件 2
9 移动电源 2
10 手机支架 2
11 创意配件 2
12 儿童手表 3
13 行车记录仪 3
14 智能摄像机 3
15 路由器 3
16 插线板 3
17 故事机 3
18 智能家居 3
19 耳机耳麦 4
20 音箱音响 4
21 便携无线音箱 4
22 麦克风 4
23 MP3/MP4 4
24 平板电脑 5
25 鼠标 6
26 键盘 6
27 键鼠套装 6
28 游戏耳机 6
29 手柄方向盘 6
30 内存 6
31 闪迪 7
32 爱国者 7
33 金士顿 7
34 东芝 7
35 三星 7
36 希捷 8
37 西部数据 8
38 东芝 8
39 闪迪 9
40 三星 9
41 金士顿 9
42 净化器 10
43 车载充电器 10
44 胎压监测 10
45 充气泵 10
46 车载吸尘器 10
47 蓝牙设备 10
48 安全座椅 11
49 保温箱 11
50 储物箱 11
51 防盗设备 11
52 功能小件 11
53 脚垫 11
54 头枕腰靠 11
55 坐垫 11
56 摩托车装备 11
57 香水 11
58 应急救援 11
59 自驾野营 11
60 后视镜 12
61 贴膜 12
62 机油 12
63 轮胎 12
64 轮毂 12
65 雨刷 12
66 滤芯器 12
67 蓄电池 12
68 汽车工具 12
69 刹车片 12
70 变速箱油 12
71 添加剂 12
72 柴机油辅助油 12
73 维修配件 12
74 洗车机 13
75 清洁剂 13
76 车蜡 13
77 玻璃水 13
78 毛巾掸子 13
79 剃须刀 14
80 电吹风 14
81 卷直发器 14
82 剃脱毛器 14
83 足浴盆 14
84 按摩器 14
85 吸尘器 15
86 加湿器 15
87 挂烫机 15
88 电风扇 15
89 除湿器 15
90 电话机 15
91 净化器 15
92 料理机 16
93 电水壶 16
94 电饭煲 16
95 微波炉 16
96 帐篷/垫子 17
97 望远镜 17
98 烧烤用具 17
99 便携桌椅 17
100 野餐用品 17
101 睡袋吊床 17
102 乒乓球 18
103 篮球 18
104 足球 18
105 滑轮滑板 18
106 网球 18
107 排球 18
108 钓竿 19
109 渔具包 19
110 泳镜 20
111 游泳圈 20
112 游泳包防水包 20
113 泳帽 20
114 点读机 21
115 早教益智 21
116 录音笔 21
117 电子词典 21
118 复读机 21
119 电纸书 21
120 打印机耗材 22
121 纸类 22
122 文具 22
123 文件管理 22
124 本册便签 22
125 笔类 22
126 财会用品 22

 

 

 

 

9.接下来我们配置spring的核心配置文件默认的是applicationContext,这个名字其实可以随便起,我一般就用这个默认的,知道是谁的核心配置文件,之前我们再这里边把所有的都配置在这个文件下,例如

 

但是这样有一个弊端,想修改的时候不好找,所以我们建议分着建,所以我们现在就让applicationContext.xml文件就干这件事,   

spring的核心配置文件applicationContext.xml就扫service层的这个包

小例子:用到spring单元测试,mybatis子查询,redis_第11张图片

 

 

为了更清楚地看我们可以在src/main/resources下边建立一个config包,里边的jdbc.xml文件是专门配置连接池的,mybatis.xml文件是专门      

这里边有一个还记得东西,springMVC.xml文件是扫描web层的,,spring的核心配置文件applicationContext是扫描service层的,mybatis.xml文件是扫描dao 层的,,这些配置文件需要大量的看和分析,总结出自己的思路就会好点,接下来如图片所示,

小例子:用到spring单元测试,mybatis子查询,redis_第12张图片

 

 

       这个是jdbc.xml文件(顺便在说一下,连接池这个是druid包-->pool---->DruidDateSouce这个类),,,当方法调用完记住destroy-method="close"    其实接下来我们配置DruidDateSouce这个类的set方法,去掉set之后第一个字母变成小写,就变成了name=""这里边的值

小例子:用到spring单元测试,mybatis子查询,redis_第13张图片

 

 

      这个是mybatis.xml文件配置的是sqlsessionfactory      这个配置找的是mybatis-spring 包然后找到sqlsessionfactorybean

这里想要说的就是

第一个name="dataSouce"这个datasouce其实是org.mybatis.spring.sqlseesionfactorybean这个类里边的一个属性,,第二个ref="dataSouce"  这个datasouce指的是jdbc.xml连接池创建的bean对象(ref这个是指对象的意思)

这个是配置别名,typeAliasesPackage这个也是上边说的那个类org.mybatis.spring.sqlseesionfactorybean的一个属性,别名的作用:就是你在写mapper这个文件里边,就不用在写前边的那个包了

        出了这个之外,你还得扫描生成mapper个代理对象,目的就是mapperna的代理对象放进ioc容器里边,供service层进行依赖注入。。。通过mybatis-spring----->mapper-------->MapperScannerConfigurer复制这个全类名即可。。。。下边的basePackage是org.mybatis.spring.mapper.MapperScannerConfigurer类里边的一个属性

 

小例子:用到spring单元测试,mybatis子查询,redis_第14张图片

 

记得在applicationContext.xml文件下加一句 

这个表示在applicationContext.xml文件加载的时候也会   读取根目(classpath代表根目录只限于spring框架)录下的config包下的所有xml文件

小例子:用到spring单元测试,mybatis子查询,redis_第15张图片

 

 

 10  .我们的spring的核心配置文件applicationContext.xml配置好了,接下来的问题就是当服务器启动的时候让它读取我们的配置文件applicationContext.xml      它怎么去读呢???其实是依靠的是一个监听器,在web.xml文件配置一个监听器,启动的时候就会读取这个文件

     解释:ContextLoaderListener  这个就是监听器的意思,在spring-web包下的  context包下的ContextLoaderListener   全类名就是org.springframework.web.context.ContextLoaderListener

                     这个的参数的意思就是读取那个配置文件,,监听器作用是可以读取文件,但是我们没有指定读哪个配置文件,这个参数的作用就是指定指定读取那个文件

 
contextConfigLocation
classpath:applicationContext.xml

 

小例子:用到spring单元测试,mybatis子查询,redis_第16张图片

 

 

 

 

 

 

你可能感兴趣的:(小例子:用到spring单元测试,mybatis子查询,redis)