文章目录
前言
提示:Horin原创
如果你已经学会了搭建框架,不妨用这个例子实际操作一下。
题目:使用SSM框架,实现用户的增删改查,可以使用用户表id或者用户名称name进行查找。
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据库
新建数据库、表。
可以代码创建,也可以手动。
二、SSM框架配置
提示:具体操作见我的第一篇文章,这里进行。
SSM框架配置
项目结构
三、编码
1.数据库映射文件:UserMapper.xml
提示:该文件存放在src/resources/mapper目录下。
注意namespace要指定到持久层DAO包下的Mapper类。
此代码可以优化改善,就是使用动态SQL。
<?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.ett.dao.UserMapper">
<!--根据name用户信息 -->
<select id="findUserByname" parameterType="String"
resultType="com.ett.pojo.User">
select * from user where name = #{name}
</select>
<delete id="deleUserByid" parameterType="int">
delete from user where id = #{id}
</delete>
<insert id="addUser" parameterType="User" keyProperty="id" useGeneratedKeys="true" >
INSERT INTO `user`(`name`, `account`,`password`,`status`) VALUES (#{name}, #{account},#{password}, #{status})
</insert>
<update id="updateUser" parameterType="User">
update user set name = #{name},password=#{password} where id = #{id}
</update>
</mapper>
2.实体类User:User.java
package com.ett.pojo;
public class User {
private String name;
private String password;
private String account;
private int status;
private int id;
//省略getter与setter方法,请自行补充
}
3.Dao持久层:UserMapper.java
仅仅用来指定接口,接口方法名必须和mapper映射文件的sql语句id一致!
package com.ett.dao;
import com.ett.pojo.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper {
public User findUserByname(String name);
public int deleUserByid(int id);
public int updateUser(User user);
public int addUser(User user);
}
4.Service逻辑层:UserService.java
package com.ett.service;
import com.ett.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
public interface UserService {
public User findUserByname(String name);
public int deleUserByid(int id);
public int updateUser(User user);
public int addUser(User user);
}
实现类我就直接放了。。。
package com.ett.service.impl;
import com.ett.dao.UserMapper;
import com.ett.pojo.User;
import com.ett.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findUserByname(String name) {
return userMapper.findUserByname(name);
}
@Override
public int deleUserByid(int id) {
return userMapper.deleUserByid(id);
}
@Override
public int updateUser(User user) {
return userMapper.updateUser(user);
}
@Override
public int addUser(User user) {
return userMapper.addUser(user);
}
}
5.Controller表现层:UserController.java
我使用的是MonderAndView来传递和跳转。
package com.ett.controller;
import com.ett.pojo.User;
import com.ett.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findUserPas")
public ModelAndView findUserByname(String name){
ModelAndView modelAndView = new ModelAndView();
User user = userService.findUserByname(name);
modelAndView.addObject("user",user);
modelAndView.setViewName("index");
return modelAndView;
}
@RequestMapping("/deleUserPas")
public ModelAndView deleUserByname(int id){
ModelAndView modelAndView = new ModelAndView();
int a = userService.deleUserByid(id);
modelAndView.setViewName("success");
return modelAndView;
}
@RequestMapping("/updateUser")
public ModelAndView deleUserByname(User user){
int result = userService.updateUser(user);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("success");
return modelAndView;
}
@RequestMapping("/addUser")
public ModelAndView addUser(User user){
int result = userService.addUser(user);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("success");
return modelAndView;
}
}
6.JSP视图层:index.jsp
form的action一定要对应上注解的名称。
input的name对应controller方法的入参名。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>管理员页面</title>
<script type="text/javaScript"
src="${pageContext.request.contextPath }/js/jquery-3.2.1.min.js"></script>
</head>
<body>
<form action="${pageContext.request.contextPath }/findUserPas" method="post">
<h2>管理员查询</h2>
查询的用户:<input type="text" name="name" />
<br>
<input type="submit" value="查询" />
</form>
<h3>查询结果:</h3>
<tr>查询的用户名称为:<td>${user.name}</td></tr><br>
<tr>查询的用户账号为:<td>${user.account}</td></tr><br>
<tr>查询的用户密码为:<td>${user.password}</td></tr><br>
<form action="${pageContext.request.contextPath }/deleUserPas" method="post">
<h2>管理员删除</h2>
删除用户的id:<input type="text" name="id" />
<br>
<input type="submit" value="删除" />
</form>
<form action="${pageContext.request.contextPath }/updateUser" method="post">
<h2>管理员修改信息</h2>
修改用户的id(此项不能修改):<input type="text" name="id" />
<br>
名称修改:<input type="text" name="name" />
<br>
密码修改:<input type="text" name="password" />
<br>
<input type="submit" value="修改" />
</form>
<form action="${pageContext.request.contextPath }/addUser" method="post">
<h2>管理员新增用户</h2>
名称:<input type="text" name="name" />
<br>
账号:<input type="text" name="account" />
<br>
密码:<input type="text" name="password" />
<br>
状态:<input type="text" name="status" />
<br>
<input type="submit" value="新增" />
</form>
</body>
</html>
总结
这个过程主要注意方法的接收和返回的参数类型,SQL的语法,几乎运行下来轻轻松松。