91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SSM框架搭建實例源碼分析

發布時間:2022-09-30 10:48:45 來源:億速云 閱讀:157 作者:iii 欄目:開發技術

本篇內容介紹了“SSM框架搭建實例源碼分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

源碼解析

我們建了一個HelloWorld工程,這個工程整合了SSM框架,用了MySQL數據庫

遵循了MVC結構,可以看到有模型(Model)、視圖(View,下面的src文件夾)、控制器(Controller),而Mapping是MyBatis用來操作數據庫的映射文件。

好的,我們一個個來看:

模型(Model)

這是一個普通JAVA對象(POJO),User.java,源碼如下:

package com.relyn.model;public class User {	public String userName = "";	public String userMsisdn = "";	public String getUserName() {		return userName;
	}	public void setUserName(String userName) {		this.userName = userName;
	}	public String getUserMsisdn() {		return userMsisdn;
	}	public void setUserMsisdn(String userMsisdn) {		this.userMsisdn = userMsisdn;
	}
}

主要作用就是數據的臨時存儲,這個User對象一般和數據庫中的User表結構保持一致。

視圖(View)

這就是一個普通的HTML頁面,index.jsp,源碼如下:

<html>
  <head>
    <title>HelloWorld</title>  </head>
  <body>
    Hello, ${userName}, your phone is ${userMsisdn}
  </body></html>

需要說明的是,這里用到了EL表達式,如:${userName}和${userMsisdn}表示的就是由Spring控制器推送過來的變量。

控制器(Controller)

這就是Spring控制器,UserController.java,源碼如下:

package com.relyn.controller; 
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.relyn.dao.UserDao;import com.relyn.model.User; 
@Controller@RequestMapping(value = "/user")public class UserController { 
	@Autowired
	private UserDao userDao; 
	@RequestMapping(value = "/say/{userMsisdn}")	public ModelAndView msisdnView(@PathVariable String userMsisdn) {
		User user = userDao.getUserNameByMsisdn(userMsisdn);
		ModelAndView mv = new ModelAndView();
		mv.setViewName("user/index");
		mv.addObject("userName", user.getUserName());
		mv.addObject("userMsisdn", user.getUserMsisdn());		return mv;
	}
}

可以看到,首先它引入了SpringFramework的一些包,然后用注解的方式在代碼中來聲明這是一個控制器@Controller,用@RequestMapping來指定了這個控制器的入口,用@Autowired來自動實例化這個UserDao的對象(這就是剛才說到的控制反轉),而第二個@RequestMapping表示的是這個方法的入口。最后,這個控制器通過返回ModelAndView對象到視圖(回憶一下剛才的那個Spring MVC工作流程圖)。

數據訪問對象(DAO)

上述控制器源碼中,有一條關鍵語句,用來從數據庫讀取數據:

User user = userDao.getUserNameByMsisdn(userMsisdn);

這里用到了UserDao這個接口,我們看下源碼:

package com.relyn.dao;import com.relyn.model.User; 
public interface UserDao {	public User getUserNameByMsisdn(String userMsisdn);
}

首先需要注意的是,這并不是一個Class,而是一個Interface,源碼非常簡單,主要作用通過方法名稱就能理解:getUserNameByMsisdn,通過號碼獲取用戶姓名。

那么,他是怎么做到的呢?

數據庫映射(Mapper)

這時候就需要MyBatis的數據庫映射配置,我們看下源碼:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.relyn.dao.UserDao">
	<resultMap type="com.relyn.model.User" id="userMap">
		<id property="id" column="id" />
		<result property="userMsisdn" column="user_msisdn" />
		<result property="userName" column="user_name" />
	</resultMap>
	<select id="getUserNameByMsisdn" parameterType="java.lang.String"
		resultMap="userMap">
		select * from user where user_msisdn=#{msisdn}	</select></mapper>

可以看到,這是一個XML文件,在<select>標簽中我們看到了熟悉的SQL語句:

select * from user where user_msisdn=#{msisdn}

里的#{msisdn}就是由控制器傳入的變量。這個映射的作用是,把從數據庫中取出的數據,映射到User類中,這就是剛才說的為什么User對象要和數據庫中user表的結構保持一致的原因了。

“SSM框架搭建實例源碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ssm
AI

翼城县| 五华县| 和静县| 太原市| 浦江县| 彝良县| 巨野县| 沙田区| 兴山县| 桦甸市| 桑植县| 高邮市| 盐津县| 沁水县| 丰城市| 陕西省| 霍城县| 榆树市| 通化县| 凤台县| 六安市| 阳山县| 炎陵县| 金乡县| 马公市| 姚安县| 垫江县| 襄城县| 安吉县| 化隆| 黔西县| 保靖县| 信阳市| 鄂尔多斯市| 新乡县| 鄂托克旗| 灵武市| 颍上县| 马龙县| 林西县| 石狮市|