温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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