1:SSM整体价格分析:
S:Spring
S: SpringMvc
M:mybatis
2:main里面需要添加3个文件夹。
根目录下的Pom需要加载公用Jar包,例如spring,mysql,mybatis,
log4j,springmvc 等等
3:3个文件夹 Java ,resouces,webapp 里面的文件结构。
java:里面的
com.system 里面文件夹:controller exception mapper po realm service
resources 里面的文件夹:mybatis spring 以及2给文件:log4j 跟mysql
webapp 里面的文件夹:最重要的文件夹 WEB-INF
4:页面的访问流程:
构造页面,是需要通过控制器的,所以URL地址是控制器的方法地址:然后方面里面返回的页面就是 webapp的jsp地址。
例如:
1:控制器的路由:
在类的上面标注的
@Controller // 控制器声明
@RequestMapping(value = "/student") // 路由控制器名字
在方法上面标注的:
@RequestMapping(value = "/showCourse") //这里访问的就是ip/student/showCourse
2:控制器里面调用 方式
首先把服务层的接口依赖注入到类中。
@Resource(name = "courseServiceImpl")
private CourseService courseService;
然后在方法里面:courseService直接调用方法出来。
list = courseService.findByPaging(1);
3:把查询的数据返回到页面:需要把list添加到addattribute里面
model:是方法里面 的默认参数,可以不传值
model.addAttribute("courseList", list);
4:返回页面:
return "student/showCourse"; 这里的返回页面string必须是 在前端jsp里面有相同的路径页面。例如:
跟目录相当于在webapp下,需要找到 :Resources里面的spring文件夹下的springmvc文件。
找到 视图解析器,
前缀:/WEB-INF/jsp/
控制前返回:student/showCourse
后缀:.jsp
全部路径就是:/WEB-INF/jsp/ student/showCourse.jsp
<!--视图解析器-->
<!--
需要配置解析jsp的视图解析器
jsp解析,默认使用jstl标签解析
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--拼接视图地址的前缀和后缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
5:控制器访问服务层:
控制器里面调用 方式
首先把服务层的接口依赖注入到类中。
@Resource(name = "courseServiceImpl")
private CourseService courseService;
然后在方法里面:courseService直接调用方法出来。
list = courseService.findByPaging(1);
6:服务层代码以及调用mapper层
每一个被控制器spring注入的接口都有实现类,在实现类里面需要调用mapper层的代码,同样也需要spring注入mapper层的接口。
调用mapper的代码也是需要使用依赖注入:
//使用spring 自动注入
@Autowired
private StudentMapperCustom studentMapperCustom;
然后在方法里面:调用
List<StudentCustom> list = studentMapperCustom.findByPaging(pagingVO);
7:mapper 层代码:
这里有点颠覆我们之前都orm的认知。尤其是C#传到java的,对xml的印象就是 配置文件,在这里我们需要把他当着类来处理。
接口是为了让服务层调用,然后定义的方法,在xml里面做具体实现:
如下图:每一个接口都对应了一个xml文件。就相当于xml文件是接口的实现类。
1:xml跟接口的绑定关键:根据mapper里面的namespace来绑定
<mapper namespace="com.system.mapper.StudentMapperCustom">
2:xml里面必须要有 resulpMap 映射关系, 里面的type 就是表名称
里面的属性是表字段关系。
<resultMap id="StudentAndSelectCourseResultMap" type="StudentCustom">
<id column="userID" property="userid"/>
<result column="userName" property="username" />
<result column="sex" property="sex" />
<result column="birthYear" property="birthyear" />
</resultMap>
后面就是 接口里面的方法实现的具体sql语句
id:就是对应接口里面的方法
parameterType:是参数
resultType:是返回值
里面的内容就是sql语句
<select id="findByPaging" parameterType="PagingVO" resultType="StudentCustom">
select student.*, college.collegeName
from student, college
WHERE student.collegeID = college.collegeID
limit #{toPageNo}, #{pageSize}
</select>