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 ...
随机推荐
- Java基础(9)——数组
难点儿的已经过去啦,现在又开始基础了哈~ 之前讲变量的时候,变量是一个个的呀~,那我要搞一串变量该啷个办呢?Java给我们出了个好东西叫数组(*^▽^*) 数组呢,就是将变量一组一组的存起来,这个也是 ...
- linux 软件连接 创建/查看/删除
1.建立软链接 具体用法是:ln -s 源文件 目标文件.源:实际存放文件的位置 当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的 ...
- Redis数据类型及常用命名总结
Redis数据类型: Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 1.String(字符串) ...
- 《深入理解Java内存模型》读书总结(转-总结很好)
概要 文章是<深入理解Java内容模型>读书笔记,该书总共包括了3部分的知识. 第1部分,基本概念 包括“并发.同步.主内存.本地内存.重排序.内存屏障.happens before规则. ...
- java.util.concurrent.Semaphore 使用
1. 概述 Semaphore(信号) 并不存在真正的许可 只是维护一个计数器, 通常用来限定进入一些资源的线程数 accquire() 方法获取许可 成功则计数器值-1 没有则阻塞直到一个可用的 ...
- easyui numberbox输入框 编辑不可编辑的切换
背景:申请单里需要选费用类型,费用类型有的有子明细项,有个合计项 当有子明细项的时候,合计项的值是通过弹出的子明细项价格的总和(设置为可编辑没问题,因为点击出来弹框,编辑不了) 没有子明细 ...
- 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作
Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...
- 讲解JavaScript两个圆括号、自调用和闭包函数
一.JavaSript圆括号的使用 先来看一组通过函数声明来定义的函数: 先附代码: 运行结果如下: 这里我们可以看出: Ø 若没有加圆括号,则返回的是这个函数的内容 Ø 若加上圆括号,则返回的是 ...
- Android 高速录像(2)
private void startRecordVideo() { if (index == VIDEO_1080) { if (!supported1080P120Fps) { showToast( ...
- PHP 多图片上传实例demo
upload.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...