搭建SSM框架并完成用户管理系统查询、更新、添加、删除、搜索功能
ssm框架的搭建
ssm框架
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。(转载自百度百科)
开发环境
- 64位的Windows系统
- Server version: 5.5.58
- MySQL Community Server (GPL)
- java version “1.8.0_211”
- SQLyog
- IDEA
- Apache Maven 3.6.0
具体步骤
第一步:搭建数据库
使用SQLyog,创建数据库java7,在数据库中添加表tb_user,具体设置如下:
第二步:用maven创建项目
使用IDEA创建新的项目
创建成功后,如果已经配置好了maven,将会自动导入包。
第三步:导入ssm包
打开素材中的pom.xml文件,替换项目目录中pom.xml文件中的properties和dependencies中的内容。
第四步:创建目录结构
第五步:编写bean层和dao层
//UserInfo.java
package com.zhongruan.bean;
public class UserInfo {
// 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 UserInfo(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public UserInfo() {
}
// 4. 重写toString()函数
@Override
public String toString() {
return "UserInfo{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
//UserDao.java
package com.zhongruan.dao;
import com.zhongruan.bean.UserInfo;
import java.util.List;
public interface UserDao {
// 全部查询
List<UserInfo> findAllUser();
// 更新前查询
UserInfo findUserById(int id);
//更新
void updateUserById(UserInfo userInfo);
//删除
void deleteUserById(int id);
//添加
void addUser(UserInfo userInfo);
//搜索
List<UserInfo> findUserByUsername(String username);
}
第六步:配置 Spring + Mybatis
将这三个文件导入到resources文件夹中。
第一个文件:两个的所有配置文件
第二个文件:数据库连接的配置文件
第三个文件:日志文件
修改db.properties文件中的jdbc,url和jdbc.password
修改applicationContext.xml文件,由于Spring扫描dao和bean,需要修改扫描的路径。
在resources文件夹下新建mapper文件夹,在mapper文件夹中创建UserMapper.xml文件。将素材中同名文件中的内容写入。
第七步:编写mapper
在resources工程目录下添加包mapper,在mapper包内创建文件UserMapper.xml。
//UserMapper.xml
<?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.zhongruan.dao.UserDao" >
<!-- 全部查询 -->
<select id="findAllUser" resultType="com.zhongruan.bean.UserInfo">
select * from tb_user
</select>
<!-- 更新前查询 -->
<select id="findUserById" parameterType="java.lang.Integer" resultType="com.zhongruan.bean.UserInfo">
select * from tb_user where id = #{id}
</select>
<!-- 更新 -->
<update id="updateUserById" parameterType="com.zhongruan.bean.UserInfo">
update tb_user set username = #{username}, password = #{password} where id = #{id}
</update>
<!-- 删除 -->
<delete id="deleteUserById" parameterType="java.lang.Integer">
delete from tb_user where id = #{id}
</delete>
<!-- 添加 -->
<insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
insert into tb_user value (#{id}, #{username}, #{password})
</insert>
<!-- 搜索 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.zhongruan.bean.UserInfo">
select * from tb_user where username = #{username}
</select>
</mapper>
第八步:编写service层
//UserInfoServiceImpl.java
package com.zhongruan.service.impl;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Autowired
private UserDao userDao;
@Override
//全部查询
public List<UserInfo> findAllUser(){
return userDao.findAllUser();
}
@Override
//更新前查询
public UserInfo findUserById(int id){
return userDao.findUserById(id);
}
//更新
@Override
public void updateUserById(UserInfo userInfo){
userDao.updateUserById(userInfo);
}
//删除
@Override
public void deleteUserById(int id){
userDao.deleteUserById(id);
}
//添加
@Override
public void addUser(UserInfo userInfo){
userDao.addUser(userInfo);
}
//搜索
public List<UserInfo> findUserByUsername(String username){
return userDao.findUserByUsername(username);
}
}
//UserInfoService.java
package com.zhongruan.service;
import com.zhongruan.bean.UserInfo;
import java.util.List;
public interface UserInfoService {
// 全部查询
List<UserInfo> findAllUser();
// 更新前查询
UserInfo findUserById(int id);
//更新
void updateUserById(UserInfo userInfo);
//删除
void deleteUserById(int id);
//添加
void addUser(UserInfo userInfo);
//搜索
List<UserInfo> findUserByUsername(String username);
}
第九步:配置SpringMVC和web.xml
SpringMVC
将spring-mvc.xml文件导入到resources工程目录下,修改其中的扫描路径。
web.xml
在webapp工程目录下创建WEB-INF文件夹,将web.xml文件导入到WEB-INF文件夹中。
第十步:引入jsp页面
将jsp文件夹导入到webapp过程目录下。
第十一步:编写controller层
//UserInfoController.java
package com.zhongruan.controller;
import com.zhongruan.bean.UserInfo;
import com.zhongruan.service.UserInfoService;
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 UserInfoController {
@Autowired
private UserInfoService userInfoService;
@RequestMapping("/findAllUser.do")
public ModelAndView findAllUser(){
List<UserInfo> userInfoList =userInfoService.findAllUser();
ModelAndView mv = new ModelAndView();
mv.addObject("userInfoList", userInfoList);
mv.setViewName("user-list");
return mv;
}
//更新前查询
@RequestMapping("/findUserById.do")
public ModelAndView findUserById(int id){
UserInfo userInfo = userInfoService.findUserById(id);
ModelAndView mv = new ModelAndView();
mv.addObject("userInfo", userInfo);
mv.setViewName("user-update");
return mv;
}
//更新
@RequestMapping("/updateUserById.do")
public String updateUserById(UserInfo userInfo){
userInfoService.updateUserById(userInfo);
return "redirect:findAllUser.do";
}
//删除
@RequestMapping("/deleteUserById.do")
public String deleteUserById(int id){
userInfoService.deleteUserById(id);
return "redirect:findAllUser.do";
}
//添加
@RequestMapping("/addUser.do")
public String addUser(UserInfo userInfo){
userInfoService.addUser(userInfo);
return "redirect:findAllUser.do";
}
//搜索
@RequestMapping("/findUserByUsername")
public ModelAndView findUserByUsername(String username){
List<UserInfo> userInfoList = userInfoService.findUserByUsername(username);
ModelAndView mv = new ModelAndView();
mv.addObject("userInfoList", userInfoList);
mv.setViewName("user-list");
return mv;
}
}
第十二步:连接Tomcat服务器
测试结果
打印所有信息。
点击“新建”选项跳转到添加用户页面,输入完成后点击保存,自动跳转到全部用户页面。
点击删除按钮,删除该条信息,并自动刷新全部用户页面。
点击“更新”按钮,跳转到修改用户信息界面,输入框中保存了原数据,输入完成点击保存,自动跳转到全部用户页面。
在输入框中输入需要查询的用户名点击查询,用户列表将打印符合要求的用户信息,点击“刷新”选项将会重新打印全部用户信息。