使用 ssm 框架,基本流程
阿新 • • 發佈:2019-01-06
題目,寫的有點大了,其實就是 對一張表的基本處理,增刪改查的基本操作演示。
好了,我們開始了。
假如,我們在做一個單表處理,就舉例是 學院(某個大學的學院) 吧。
首先,我們分析 學校這樣表有哪些屬性,分析完後,就可以在資料庫中 建 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();
這個的。
看
他裡面的程式碼:
@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 層 把資料展示出來
這個程式碼 屬於虛擬碼,只是想表達邏輯
<th>院系名稱</th>
<c:forEach items="${page.result }" var="depart1" varStatus="status">
<td>${depart1.name}</td>
可以看到,這樣就基本完成了 整個流程。