基于ssm框架实现多表关联----添加、删除、批量删除、修改(java+tomcat+mysql)

一、项目部署

1.Eclipse创建一个Dynamic Web Project(2.5)
2.在src里面创建1个Package(com.airui),该包下面有5个子包 (mapper,pojo,service,controller)如图下:
在这里插入图片描述
3.mapper里创建一个接口interface和xml(名字最好一致),
pojo里创建两个实体类User、Dept,
service里创建一个接口interface和一个实现接口的类class,
controller里创建一个类class
如图下:
在这里插入图片描述
4.创建一个资源文件夹Source Folder与src同级,命名为config,如图下:
在这里插入图片描述
最后一步有资源包
在这里插入图片描述

  1. applicationContext-dao.xml路径一致
    在这里插入图片描述
  2. applicationContext-service.xml路径一致
    在这里插入图片描述
  3. 2.db.properties 需要改一下数据库
    在这里插入图片描述
  4. springmvc.xml 作用:加载映射文件 UserMapper.xml
    两行蓝色线表示为什么要在lib文件夹下创一个jsp文件夹并且里面必须时jsp文件
    红色一行代表路径要一致
    在这里插入图片描述
  5. SqlMapConfig.xml路径一致
    在这里插入图片描述

5.在WEB-INF文件夹下创建一个普通的文件夹,命名为jsp
在这里插入图片描述
6.重要的一步部署Tomcat环境,还有在lib文件夹下导入一些jar包,web.xml也需要配置
项目源码+环境+配置+jar包
链接:https://pan.baidu.com/s/13A0BPIh47IOgrsvJe6Qe8Q 提取码:x1lg

7.创建一个数据库,建dept、user两张表,主键与外键关联
注:字段要与pojo里的实体类的字段一致
user:
在这里插入图片描述
dept:
在这里插入图片描述
两张表关联字段:
在这里插入图片描述

二.实现功能图

1.展示界面------show.jsp
在这里插入图片描述
访问路径时需在后面添加 /user/show.action
因为1.在UserController添加了 @RequestMapping(“user”) //窄化路径
2.在web.xml有这样的代码:<servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
请求是以.action结尾的
2.添加界面------add.jsp
在这里插入图片描述
3.更新修改界面(数据回显)------update.jsp
在这里插入图片描述

三.Mapper层

1.UserMapper.java

package com.airui.mapper;

import java.util.List;

import com.airui.pojo.User;

public interface UserMapper {
       
	List<User> findAll(User user);

	User findByUid(Integer uid);

	void update(User user);

	void deleteAll(Integer[] ids);

	void add(User user);

	void delete(Integer uid);
}




2.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.airui.mapper.UserMapper">
       
       
       <!-- 查查询用户关联部门信息使用resultmap -->
       <resultMap type="user" id="qd">
           <id column="uid" property="uid"/>
           <result column="username" property="username"/>
           <result column="sex" property="sex"/>
           <result column="age" property="age"/>
           <result column="birthday" property="birthday"/>
           <result column="did" property="did"/>
           <!-- 一对一关联映射 -->
		   <!-- 
		    property:映射数据库列的字段或属性
		    javaType:完整java类名或别名
		    -->
           <!-- <association property="dept" javaType="dept">
           <!-- column:数据库的列名或者列标签别名  property:dept对象中did属性-->
           <id column="did" property="did"/>
           <result column="dname" property="dname"/>
           </association> -->
           
           <!-- 一对多关联映射 -->
		   <!-- 
		    property:映射数据库列的字段或属性
		    ofType:完整java类名或别名
		    -->
           <collection property="dept" ofType="dept">
           <id column="did" property="did"/>
           <result column="dname" property="dname"/>
           </collection>
       </resultMap>
       
       <select id="findAll" parameterType="user" resultMap="qd">
           select u.*,d.dname from user u,dept d
               <where>
                   u.did=d.did
                   <if test="age!=null and age!=''">
                      and age=#{age}
                   </if>
                   <if test="username!=null and username!=''">
                      and username like '%${username}%'
                   </if>
               </where>
       </select>
       <!-- 添加 -->
       <insert id="add" parameterType="user">
            insert into user values(null,#{username},#{sex},#{age},#{birthday},#{did})
       </insert>
       <!-- 查id -->
       <select id="findByUid" parameterType="int" resultType="user">
             select * from user where uid=#{uid}
       </select>
       <!-- 修改 -->
       <update id="update" parameterType="user">
             update user set username=#{username},sex=#{sex},age=#{age},birthday=#{birthday},did=#{did} where uid=#{uid}
       </update>
       <!-- 批量删除 -->
       <delete id="deleteAll">
             delete from user
             <where>
                   <foreach collection="array" item="uid" open="uid in(" close=")" separator=",">
                         #{uid}
                   </foreach>
             </where>
       </delete>
       <!-- 单个删除 -->
       <delete id="delete">
             delete from user where uid=#{uid}
       </delete>
</mapper>



四.Pojo层

1.User实体类

package com.airui.pojo;

import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

public class User {
	private Integer uid;
	private String username;
	private String sex;
	private Integer age;
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date birthday;
	private Integer did;

	private Dept dept;

	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(Integer uid, String username, String sex, Integer age, Date birthday, Integer did, Dept dept) {
		super();
		this.uid = uid;
		this.username = username;
		this.sex = sex;
		this.age = age;
		this.birthday = birthday;
		this.did = did;
		this.dept = dept;
	}

	public Integer getUid() {
		return uid;
	}

	public void setUid(Integer uid) {
		this.uid = uid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public Integer getDid() {
		return did;
	}

	public void setDid(Integer did) {
		this.did = did;
	}

	public Dept getDept() {
		return dept;
	}

	public void setDept(Dept dept) {
		this.dept = dept;
	}

	@Override
	public String toString() {
		return "User [uid=" + uid + ", username=" + username + ", sex=" + sex + ", age=" + age + ", birthday="
				+ birthday + ", did=" + did + ", dept=" + dept + "]";
	}
	

}





2.Dept实体类

package com.airui.pojo;

public class Dept {
    private Integer did;
    private String dname;
	
	public Integer getDid() {
		return did;
	}
	public void setDid(Integer did) {
		this.did = did;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
      
}


五.Service层

1.UserService

package com.airui.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.airui.pojo.User;

@Service
public interface UserService {

	List<User> findAll(User user);

	User findByUid(Integer uid);

	void update(User user);

	void deleteAll(Integer[] ids);

	void add(User user);

	void delete(Integer uid);

}



2.UserServiceImpl

package com.airui.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.airui.mapper.UserMapper;
import com.airui.pojo.User;

@Service
@Transactional
public class UserServiceImpl implements UserService {
      
	@Autowired
	private UserMapper um;
	
	@Override
	public List<User> findAll(User user){
		return um.findAll(user);
	}
	
	@Override
	public void add(User user){
		um.add(user);
	}
	
	@Override
	public User findByUid(Integer uid){
		return um.findByUid(uid);
	}
	
	@Override
	public void update(User user){
		um.update(user);
	}
	
	@Override
	public void deleteAll(Integer[] ids){
		um.deleteAll(ids);
	}

	@Override
	public void delete(Integer uid) {
		um.delete(uid);		
	}
}



六.Controller层

UserController

package com.airui.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.airui.pojo.User;
import com.airui.service.UserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@Controller
@RequestMapping("user")  //窄化路径
public class UserController {
      @Autowired
      private UserService us;
      
      //分页展示,前端表格提交到show.action
      @RequestMapping("show")
      public String show(@RequestParam(required=true,defaultValue="1")Integer pageNum,Model model,User user) {
    	  //导入PageHelper.jar包,(当前页,有2条数据)
    	  PageHelper.startPage(pageNum, 2);
    	  List<User> ulist=us.findAll(user);
    	  //封装好的PageInfo对象,实现分页
    	  PageInfo<User> page=new PageInfo<User>(ulist);
    	  //向model添加数据'相当于'之前学的request.setAttribute("page", page),是相同的功能
    	  model.addAttribute("page", page);
    	  //去jsp
    	  return "show";
      }
      
      //去添加,前端表格提交到goadd.action
      @RequestMapping("goadd")
      public String goadd() {
    	  return"add";
      }
      
      //添加,前端表格提交到add.action
      @RequestMapping("add")
      public String add(User user) {
    	  us.add(user);
    	  return "redirect:show.action";
      }
      
      //去修改,前端表格提交到findByUid.action
      @RequestMapping("findByUid")
      public String findByUid(Integer uid,Model model) {
    	  User user=us.findByUid(uid);
    	  model.addAttribute("user", user);
    	  return "update";
      }
      
      //修改,前端表格提交到update.action
      @RequestMapping("update")
      public String update(User user) {
    	  us.update(user);
    	  return "redirect:show.action";
      }
      
      //批量删除,前端表格提交到deleteAll.action
      @RequestMapping("deleteAll")
      public String deleteAll(Integer [] ids) {
    	  us.deleteAll(ids);
    	  return "redirect:show.action";
      }
      
      //单个删除,前端表格提交到delete.action
      @RequestMapping("delete")
      public String delete(Integer uid) {
    	  us.delete(uid);
    	  return "redirect:show.action";
      }
}





七.Jsp

1.show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!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>Insert title here</title>
</head>
<body>
     <center>
     <a href="${pageContext.request.contextPath }/user/goadd.action">添加</a>     
         <form action="" id="myForm" method="post">
                <table border="1px" cellspacing="0">
                      <tr>
                          <td colspan="8">
				                              姓名:<input type="text" name="username" value="${user.username }">
				                              年龄:<input type="text" name="age" value="${user.age }">
	                              <input type="hidden" name="pageNum" id="pn" value="${page.pageNum }">
	                              <input type="button"  value="搜索" onclick="search()">
                          </td>
                      </tr>
                      <tr>
                          <td colspan="8">
	                              <input type="button" value="批量删除" onclick="deleteAll()">
                          </td>
                      </tr>
                      <tr>
                           <td>
                               <input type="checkbox" id="ck" onclick="choose()">全选/全不选
                           </td>
                           <td>ID</td>
                           <td>姓名</td>
                           <td>性别</td>
                           <td>年龄</td>
                           <td>生日</td>
                           <td>部门</td>
                           <td>操作</td>
                      </tr>
                      <c:forEach var="u" items="${page.list }">
                         <tr>
                             <td>
                                <input type="checkbox" name="ids" value="${u.uid }">
                             </td>
                               <td>${u.uid }</td>
	                           <td>${u.username }</td>
	                           <td>${u.sex }</td>
	                           <td>${u.age }</td>
	                           <td><fmt:formatDate value="${u.birthday }" pattern="yyyy-MM-dd"/></td>
	                           <td>${u.dept.dname }</td>
	                           <td>
	                               <a href="${pageContext.request.contextPath }/user/findByUid.action?uid=${u.uid}">修改</a>
	                               <a href="${pageContext.request.contextPath }/user/delete.action?uid=${u.uid}">删除</a>
	                           </td>
                         </tr>   
                      </c:forEach>
                </table>
                                   第${page.pageNum }/共${page.pages }/${page.total }<input type="button" value="首页" onclick="jump(${page.firstPage})">
                <input type="button" value="上一页" onclick="jump(${page.prePage})">
                <input type="button" value="下一页" onclick="jump(${page.nextPage})">
                <input type="button" value="尾页" onclick="jump(${page.lastPage})">
         </form>
     </center>
</body>
<script type="text/javascript">
      function search() {
		   document.getElementById("myForm").action="${pageContext.request.contextPath }/user/show.action";
		   document.getElementById("myForm").submit();
	  }
      
      //分页
      function jump(obj) {
    	  var i='${page.total}';
    	  var totalpage='${page.pages}';
    	  if (obj>=1 && obj<=totalpage) {
    		  document.getElementById("pn").value=obj;
    		  document.getElementById("myForm").action="${pageContext.request.contextPath }/user/show.action";
   		      document.getElementById("myForm").submit();
		}
		   
	  }
      
      //批量删除
      function deleteAll() {
    		  document.getElementById("myForm").action="${pageContext.request.contextPath }/user/deleteAll.action";
   		      document.getElementById("myForm").submit();
		   
	  }
      
      //全选/全不选
      function choose() {
    	  var ck=document.getElementById("ck").checked;
    	  var ids=document.getElementsByName("ids");
		  for (var i = 0; i < ids.length; i++) {
			  ids[i].checked=ck;
		}  
	  }
</script>
</html>

2.update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!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>Insert title here</title>
</head>
<body>
     <center>
         <form action="${pageContext.request.contextPath }/user/update.action" method="post">
              <input type="hidden" name="uid" value="${user.uid }">
	                              姓名:<input type="text" name="username" value="${user.username }"><br>
	                              性别:<input type="radio" name="sex" value="男" <c:if test="${user.sex eq '男' }">checked='checked'</c:if>><input type="radio" name="sex" value="女" <c:if test="${user.sex eq '女' }">checked='checked'</c:if>><br>
                                       年龄:<input type="text" name="age" value="${user.age }"><br>
                                       生日:<input type="date" name="birthday" value="<fmt:formatDate value="${user.birthday }" pattern='yyyy-MM-dd'/>">
                                       专业:<select name="did">
                              <option value="1" <c:if test="${user.did == 1 }">selected='selected'</c:if>>开发部</option>
                              <option value="2" <c:if test="${user.did == 2 }">selected='selected'</c:if>>测试部</option>
                              <option value="3" <c:if test="${user.did == 3 }">selected='selected'</c:if>>市场部</option>         
                       </select><br>
                       <input type="submit"  value="修改">
         </form>
     </center>
</body>
</html>

3.add.jsp

<%@ 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>Insert title here</title>
</head>
<body>
     <center>
        <form action="${pageContext.request.contextPath }/user/add.action" method="post">
            姓名:<input type="text" name="username"><br>
            性别:<input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"><br>
            年龄:<input type="text" name="age"><br>
            生日:<input type="date" name="birthday"><br>
            专业:<select name="did">
               <option value="1">开发部</option>
               <option value="2">测试部</option>
               <option value="3">市场部</option>
            </select><br>
            <input type="submit" value="添加">
        </form> 
     </center>
</body>
</html>
  • 11
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在基于SSM实现的图书管理系统-JAVA的选题中,我们可以依据以下几点来确定我们的选题:1、需要满足用户的需求;2、要有良好的设计思路;3、要确保系统的可扩展性和可维护性;4、要考虑到安全性问题;5、要考虑到数据库的设计。 ### 回答2: 首先,基于SSM实现的图书管理系统是一个涵盖了多个模块和功能的综合性项目,适用于图书馆、图书店等机构管理图书的需求。 其选题依据主要有以下几点: 1. 系统功能完善:图书管理系统通过SSM框架实现,可以提供图书的入库、借阅、归还、销售等基本功能,同时还可以实现图书信息的查询、统计、排序等高级功能,使得管理员可以更加方便地管理图书馆或图书店的日常工作。 2. 数据库支持:SSM框架中的Mybatis技术可以方便地操作数据库,将图书的相关信息存储在数据库中,并通过数据库查询实现各种功能,如根据图书名称查询、根据作者查询等。同时,数据库的支持还可以实现数据的备份、恢复等重要功能。 3. 用户友好性:基于SSM的图书管理系统可以通过网页前端界面展示,界面美观、简洁,操作简单直观,提供了良好的用户体验。管理员可以通过界面快速地进行各种操作,如入库、借阅、归还、销售等,同时用户也可以通过界面方便地查询图书信息、借阅记录等。 4. 扩展性:基于SSM的图书管理系统具有较高的扩展性。通过使用Spring框架,可以方便地对系统进行模块的拓展和功能的增加,如增加图书推荐、用户评价等功能。同时,也可以方便地对系统进行优化和升级。 综上所述,基于SSM实现的图书管理系统具有功能完善、数据库支持、用户友好性和较高的扩展性等特点,能够满足图书馆、图书店等机构对图书管理的需求。 ### 回答3: 基于SSM(Spring+SpringMVC+MyBatis)实现的图书管理系统是一款完善且高效的Java项目选题。以下是几个选题依据的解释: 首先,图书管理系统作为一种常见的信息管理系统,在学校、图书馆、企业等多种场景中都有广泛的应用。通过该系统,管理员可以方便地对图书进行管理,包括图书目录的录入、借阅还书的管理、图书信息查询等。因此,该选题具有较高的实用性和需求性。 其次,使用SSM框架进行开发可以提高系统的开发效率和性能。Spring框架提供了非常丰富的功能模块,包括依赖注入、AOP切面、事务管理等,可以简化开发过程并提高代码的可维护性。SpringMVC框架是一种基于Model-View-Controller设计模式的Web框架,可以实现请求的分发和处理,并提供了RESTful风格的URL映射和统一异常处理等特性。MyBatis框架则可以方便地进行数据库操作,提供了灵活的SQL映射和对象关系映射的能力。因此,选择SSM框架可以使图书管理系统的开发更加高效和稳定。 最后,Java作为一种广泛应用于企业级开发的编程语言,具有跨平台性和兼容性,并拥有强大的生态系统,提供了大量的开发工具和框架。通过使用Java的相关技术,可以实现图书管理系统的功能完善、界面友好、性能稳定。并且,Java有丰富的开源社区,可以获取大量的学习资源和问题解决方案。 综上所述,基于SSM实现的图书管理系统-JAVA作为选题,具有实用性、开发效率高、性能稳定以及丰富的学习资源等优势,是一款非常值得选择和开发的项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值