ssm框架基本流程
题目,写的有点大了,其实就是 对一张表的基本处理,增删改查的基本操作演示。
好了,我们开始了。
假如,我们在做一个单表处理,就举例是 学院(某个大学的学院) 吧。
首先,我们分析 学校这样表有哪些属性,分析完后,就可以在数据库中 建 depart 这张表了。
有三个属性:
然后要在项目中 做一个 depart Bean 可以使用generate mybais 工具自动生成 depart model ,现在我们model已经做好了。
下面是Depart.java 中的代码,都是自动生成的,但是有时因为后面业务的需求,需要去其他表里查 需要增加 Model 像代码中的school ,因为学院是隶属于学校的,
* @mbggenerated
*/
private String departId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column depart.schoolId
*
* @mbggenerated
*/
private String schoolId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column depart.name
*
* @mbggenerated
*/
private String name;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column depart.departId
*
* @return the value of depart.departId
*
* @mbggenerated
*/
public String getDepartId() {
return departId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column depart.departId
*
* @param departId the value for depart.departId
*
* @mbggenerated
*/
public void setDepartId(String departId) {
this.departId = departId == null ? null : departId.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column depart.schoolId
*
* @return the value of depart.schoolId
*
* @mbggenerated
*/
public String getSchoolId() {
return schoolId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column depart.schoolId
*
* @param schoolId the value for depart.schoolId
*
* @mbggenerated
*/
public void setSchoolId(String schoolId) {
this.schoolId = schoolId == null ? null : schoolId.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column depart.name
*
* @return the value of depart.name
*
* @mbggenerated
*/
public String getName() {
return name;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column depart.name
*
* @param name the value for depart.name
*
* @mbggenerated
*/
private School school;
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public School getSchool() {
return school;
}
public void setSchool(School school) {
this.school = school;
}
model我们已经做好了, model-view-controller mvc
下来我们做controller层():
(现在我们的业务需求是,把depart中的数据展示出来)
DepartController.java
@Controller //spring 注解 作用是 表示这是个控制器
@RequestMapping(value="depart") //以后用来做访问的地址
public class DepartController {
@Resource //表示这个类是 依赖于spring来注入的,即控制反转
DepartService departService;
//上面相当于 DepartService departService=new DepartServiceImpl(); spring 帮助我们实现了注入
@RequestMapping(value="list")
public String list(@ModelAttribute Page<Depart>page,Depart depart,Model model, HttpServletRequest request){
departService.selectByModel(page, depart);//查找结果
return "basic/depart_list"; //到view
}
}
看到了,上面的代码,你能会问 DepartService 这个东西在哪,我们现在做个这个东西,我实际做的时候,一般是先吧service层搭起来,然后再做controller层。
可以看到这是个接口,
具体实现是在下面这个:
这个时候你就要问了,spring是如何实现
DepartService departService=new DepartServiceImpl();
- 1
这个的。
看
他里面的代码:
@Service //这个注解,就代表 要被spring注入
public class DepartServiceImpl extends GenericServiceImpl<Depart, DepartExample, String> implements DepartService{
@Resource
DepartMapper departMapper;
@Override
public void selectByModel(Page<Depart> page, Depart depart) {
departMapper.selectByModel(page, depart);//调用dao层
}
}
dao层: 大多是 自动生成的,不过到了具体的业务需求,也要需要手动去写,就像 我们调用的selectByModel(page, depart); 就是我们手动写的
接下来,看看 selectByModel(page, depart);
这个具体的。
用到了动态SQL:
<select id="selectByModel" parameterType="com.xuezhixin.mls.web.model.Depart" resultMap="BaseResultMap">
select
d.* from depart d
<where>
<if test="name !=null and name !=''">
and name=#{name,jdbcType=CHAR}
</if>
</where>
</select>
generate mybatis自动生成的
<resultMap id="BaseResultMap" type="com.xuezhixin.mls.web.model.Depart" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="departId" property="departId" jdbcType="CHAR" />
<result column="schoolId" property="schoolId" jdbcType="CHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
</resultMap>
到这里,我们的业务基本就处理就完成了。
接下来,我们 做 view 层 把数据展示出来
这个代码 属于伪代码,只是想表达逻辑
- 1
- 2
<th>院系名称</th>
<c:forEach items="${page.result }" var="depart1" varStatus="status">
<td>${depart1.name}</td>
- 1
- 2
- 3
可以看到,这样就基本完成了 整个流程。
ssm框架基本流程的更多相关文章
- ssm框架搭建流程及原理分析
这几天自己想搭建个ssm框架玩一下,有些东西长时间不玩都给忘了,所以自己把整个流程整理了一下,只要跟着步骤,就能顺利完成ssm框架的搭建. 一.搭建步骤: 1.整理jar包 2.对于一个web ...
- 基于IDEA采用springboot+Mybatis搭建ssm框架简单demo项目的搭建配置流程
一.通过对比可以原始SSM搭建流程,spring boot省去了大量的配置,极大提高了开发者的效率.原始SSM框架搭建流程见博客: https://www.cnblogs.com/No2-explor ...
- SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)
初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现 ...
- 实习小结(二)--- SSM框架搭建
SSM项目框架搭建 前几天做了一个学生信息管理的项目,使用纯控制台输入,查询数据库,将信息在控制台中打印,功能完善得差不多之后,老师让将这个项目移植到Web中,使用Spring+SpringMVC+M ...
- 使用maven搭建ssm框架的javaweb项目
目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...
- SSM框架——整合搭建流程
1.首先创建maven工程,使用哪种方式进行创建都可以,可以参考博主之前的文章: <两种方式创建Maven项目[方式二]><两种方式创建Maven项目[方式一]> 2.先看看搭 ...
- SpringMVC--从理解SpringMVC执行流程到SSM框架整合
前言 SpringMVC框架是SSM框架中继Spring另一个重要的框架,那么什么是SpringMVC,如何用SpringMVC来整合SSM框架呢?下面让我们详细的了解一下. 注:在学习SpringM ...
- SSM框架Web程序的流程(Spring SpringMVC Mybatis)
SSM框架的Web程序主要用到了三个技术: Spring:用到了注解和自动装配,就是Spring的两个精髓IOC(反向控制)和 AOP(面向切面编程). SpringMVC:用到了MVC模型,将逻辑代 ...
- ssm框架的搭建流程
1.新建一个Maven project (1)选中create a simple project,自动配置必要的文件 (2)Packaging选择war类型.jar和war的区别就是一个是普通的jav ...
随机推荐
- post方式发送接收文件
//文件post发送 var express = require('express');var router = express.Router();var request = require(&quo ...
- 二:Vim常用命令
一般模式下的命令: -- 插入命令 i 光标前插入 I 当前行开始 o 下一行 O 上一行插入新行 a 光标后插入 A 当前行末尾 -- 定位命令 :set nu 显示行号 :set nonu 取消行 ...
- JSON 转 VO
需求 将获取的json数据直接转为vo 解决 利用net.sf.json.JSONObject的toBean() 确保json中的key值和vo中的字段名称一致 JSONObject jsonObje ...
- Java 不可变类
Java 不可变类 immutable object 不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值. 如JDK内部自带的很多不可变类:Interger.Long和String等. * ...
- Codis3.2 安装部署
转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html 一.软件下载 下载 下载 zookeeper (Codis注册中心) http://m ...
- Java线程面试题 Top 50 (个人总结)(转)
问答总结: 1. JDK1.5引入了哪些更高阶的并发工具 2. Java中CyclicBarrier 和 CountDownLatch有什么不同? CountDownLatch和CyclicBar ...
- 程序员学炒股(6) 让我们来看一下7月份A股的表现
有了前几天的数据准备,那让我们看一下7月份的股市是牛市还是熊市呢? 牛市和熊市主要就看股票的涨跌分布情况,虽然我们看大盘数据,但是不过中石油占的A股市值太大了,并且中石油95%的股票都是大股东控制的相 ...
- 使用QQ第三方登录 并在父页面跳转刷新
<html> <head> <title>QQ登录跳转</title> <script src="http://lib.sinaapp. ...
- css样式的优先顺序
一.css样式的权重:!important(1000+) > 内联样式( 1000 ) > ID选择器(100 ) > 类选择器(10) > 标签选择器( 1 ) > ...
- NOIP2017:列队
Sol 考场上: 这不是送\(50\)吗,\(Q^2\)递推就好了 然后,怎么又送\(20\)分??? \(woc\),只有半个小时了,顺利没调出来只有\(50\)分 考后: 神\(TM\)一个大于号 ...