SSM的简单搭建
一、什么是SSM
SSM是 Spring + SpringMVC + MyBatis 的整合
1.1、Spring
Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
1.2、SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
1.3、MyBatis
MyBatis 是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、SSM搭建步骤
-
创建数据库
-
用maven 创建项目
-
导包 – ssm所有包
-
创建目录结构 – MVC
MVC:
i. M:model 模型
ii. V: View 视图
iii. C:Controller
目录结构 : bean/model/entity/ – 实体层
Dao – 接口,是与数据库直接交互的
Service – 业务逻辑层,接口和实现,
Controller – 控制器(SpringMVC) -
编写 bean 和 dao
-
配置 Spring + Mybatis
-
编写mapper
-
编写service层
-
配置 springMVC 和 web.xml
-
引入jsp页面
-
编写controller
三、实现
1.导入ssm所有包
- 在pom.xml中体现了所有包,将素材.zip中pom.xml的
<properties>
——</properties>
和<dependencis>
——</dependencis>
的部分替换掉项目中的相应部分。
properties中包括spring版本号、mybatis版本号、log4j日志文件管理包版本等,dependencis包括spring核心包、mybatis核心包、java ee jar 包、Mysql数据库链接jar包、dbcp的jar包(用来在applicationContext.xml中配置数据库)等。
2.创建目录结构
mvc的主要作用是将业务代码与逻辑代码分离。
- 在main下右击新建 Directory命名为java,在java上右击选择Mark Directory as->Sources Root.
- 在java文件夹下右击新建Package,命名com.zhongruan,
- 在zhongruan文件下右击新建4个Package,分别命名为bean、dao、service、controller
- 在main下右击新建 Directory命名为resources,在java上右击选择Mark Directory as->Resources Root,用来保存配置ssm的配置文件。
3.编写bean和dao层
- 在bean包下新建User类,作用是映射数据库字段。
四、主要代码
1.bean中建立实体类user
package com.zzs.bean;
//实体类:映射数据库字段,数据库在Java中的提现
public class User {
//1.封装属性
private int id;
private String username;
private String password;
//2.get and set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//3.构造方法
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User() {
}
//4.toString
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
2.userdao中建立操作对数据库操作的接口
package com.zzs.dao;
import com.zzs.bean.User;
import java.util.List;
//数据库交互层
public interface UserDao {
//查询全部
List<User> findAllUser();
//添加用户
void addUser(User user);
//删除用户
void deleteUser(User user);
//修改用户
User findUserid(int id);
void updateUser(User user);
}
注:修改用户信息需要两个方法(对应两条SQL语句) findUserid:确定对应ID的用户,updateUser:修改用户信息
3.usermapper文件中实现对数据库的操作
<?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.zzs.dao.UserDao" >
<!-- 查询全部 -->
<!-- resultType输出类型映射 -->
<select id ="findAllUser" resultType="com.zzs.bean.User">
select * from tb_user
</select>
<!-- 添加用户 -->
<!-- parameterType输入类型映射 -->
<insert id ="addUser" parameterType="com.zzs.bean.User">
insert into tb_user(id,username,password) values(#{id},#{username},#{password})
</insert>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="com.zzs.bean.User">
delete from tb_user where id=#{id}
</delete>
<!--修改用户 -->
<select id ="findUserid" resultType="com.zzs.bean.User" parameterType="com.zzs.bean.User">
select * from tb_user where id=#{id}
</select>
<update id="updateUser" parameterType="com.zzs.bean.User">
update tb_user set username=#{username},password=#{password} where id=#{id}
</update>
注:修改用户信息所用到的findUserId方法,既需要resultType(有返回对象),又需要parameterType(有参数)。
4.service层:操作的接口及实现
UserService接口:`
package com.zzs.service;
import com.zzs.bean.User;
import java.util.List;
public interface UserService {
//列表
List<User> findAllUser();
//增加
void addUser(User user);
//删除用户
void deleteUser(User user);
//修改
User findUserid(int id);
void updateUser(User user);
}
UserServiceImpl类:
package com.zzs.service.impl;
import com.zzs.bean.User;
import com.zzs.dao.UserDao;
import com.zzs.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findAllUser() {
return userDao.findAllUser();
}
@Override
public void addUser(User user) {
userDao.addUser(user);
}
/*@Override
public List<User> findOnebyID(int id){
return userDao.findOnebyID(id);
}*/
@Override
public void deleteUser(User user) {
userDao.deleteUser(user);
}
@Override
public User findUserid(int id) {
return userDao.findUserid(id);
}
@Override
public void updateUser(User user) {
userDao.updateUser(user);
}
}
5.Controller控制跳转整个项目
package com.zzs.controller;
import com.zzs.bean.User;
import com.zzs.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findAllUser.do")
public ModelAndView findAllUser(){
//1.
List<User> userList= userService.findAllUser();
//2.实例化
ModelAndView mv = new ModelAndView();
//一个对象添加到模型
mv.addObject("userList",userList);
//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
mv.setViewName("allUser");
return mv;
}
//增加
@RequestMapping("/toAddUser.do")
public String toAddUser()
{
return "addUser";
}
@RequestMapping("/save.do")
public String addUser(User user)
{
userService.addUser(user);
return "redirect:findAllUser.do";
}
//删除
@RequestMapping("/delete.do")
public String deleteUser(User user)
{
userService.deleteUser(user);
return "redirect:findAllUser.do";
}
//修改
@RequestMapping("/toUpdate.do")
public ModelAndView findUserid(int id)
{
User user=userService.findUserid(id);
//return "updateUser";
ModelAndView mv = new ModelAndView();
mv.addObject("userInfo",user);
mv.setViewName("updateUser");
return mv;
}
@RequestMapping("/update.do")
public String updateUser(User user)
{
userService.updateUser(user);
return "redirect:findAllUser.do";
}
/*@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
@RequestMapping("/addUser.do")
public String addUser(User user){
userService.addUser(user);
//重定向到指定的jsp页面
return "redirect:findAllUser.do";
}
/*
@RequestMapping("/addUser.do")
public ModelAndView addUser(User user) {
studentService.add(student);
ModelAndView mav = new ModelAndView("redirect:/findAllUser.do");
return mav;
}*/
}
四、运行结果
所以 … … 成功了。
五、资源
百度云:https://pan.baidu.com/s/1Kv2c-eUSmskoM70fC7DxbA
提取码:u6m3