1. 程式人生 > >使用 ssm 框架,基本流程

使用 ssm 框架,基本流程

題目,寫的有點大了,其實就是 對一張表的基本處理,增刪改查的基本操作演示。
好了,我們開始了。

假如,我們在做一個單表處理,就舉例是 學院(某個大學的學院) 吧。
首先,我們分析 學校這樣表有哪些屬性,分析完後,就可以在資料庫中 建 depart 這張表了。
有三個屬性:

depart表

然後要在專案中 做一個 depart Bean 可以使用generate mybais 工具自動生成 depart model ,現在我們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>

這裡寫圖片描述

可以看到,這樣就基本完成了 整個流程。