在搭建好ssm框架后,如何实现增删改查(CRUD)

搭建ssm框架:https://blog.csdn.net/Carl_changxin/article/details/81664331

1、先看ssm搭建好的目录结构

2、分别介绍这些包的作用

(1)controller,service,dao三个包的作用是将系统分层,更容易管理。

(2)controller的作用是处理浏览器请求,但真正处理请求都需要依赖service,dao层。

(3)service层称为业务层,如几个单一的增删改查组合成一个复杂的业务,需要给该层设定事务。

(4)dao数据访问层,作用是和数据库打交道,取数据或存数据。

(5)dao中的每一个接口都要在mapper包下有一个与之对应的xml文件,在这个xml编辑sql语句。

(6)model包下是各种实体类,这些实体类封装着数据,在各个层次中传递。

(7)举例:从浏览器提交数据,到数据库保存数据的过程是怎样的呢?先说明过程,后面有代码

1、浏览器提交的数据,不论是get方式,还是post方式,都会被controller层中某个类中的某个方法的形参所接收,一般可以设置这个形参是某个实体类的对象,通过这个对象就能接收到浏览器提交的数据,前提是浏览器提交的参数名要与对象的属性名一致。

如:登录的时候,提交的是账号,密码两个参数,就可以用实体类User的一个对象接收。

2、接收到参数以后,需要对参数进行各种处理,就要在controller层的这个方法中,去调用service层相应的业务。

如:登录的业务层有2步,先判断能否从数据库中查询到对应的数据(账号,密码均要正确),再返回true或false

3、业务层中需要对数据进行验证或其它操作,就要调用dao层中的增删改查的方法,而dao层提供只是接口,mapper包下的与接口对应的xml文件会被加载,执行sql语句。

如:登录的dao层中,创建一个userDao接口,有find方法,在userMapper.xml文件中就会配置该查询方法的对应的sql语句。

3、CRUD实例

(1)页面:

index.html逻辑代码:

<script type="text/javascript">
		var page=1;
		var rows=10;
		var pages=0;
		
		$(function(){
			freshPage($);
		});

		function freshPage($){
			$.getJSON("user/list.do",{page:page,rows:rows},function(data){
				pages = data.pages;
				$("#ddd").html("");
				 $.each(data.data,function(i,e){
						$("#ddd").append("<tr><td>"+(i+1)+"</td><td style='display:none'>"+e.id+"</td><td>"+e.userName+"</td><td>"+e.passWord+"</td><td><span class='glyphicon glyphicon-pencil' aria-hidden='true' data-toggle='modal' data-target='#updateUser' onclick='editInfo(this)'></span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='glyphicon glyphicon-trash'  onclick='delUser(this)'></span></td></tr>");
					}) 
			})
		}
		
		function saveUser(){
			var userName = $("input[name=userName]").val();
			var passWord = $("input[name=passWord]").val();
			$.ajax({
				url:"user/save.do",
				type:"post",
				data:{userName:userName,passWord:passWord},
				dataType:"json",
				success:function(d){
					$('#addUser').modal('hide');
					if(d.code==200){
						//刷新表格
						freshPage($);
					}
				}
			})
		}

		function delUser(that){
			var id = $(that).parent().parent().children().eq(1).text();
			$.ajax({
				url:"user/del.do",
				type:"post",
				data:{id:id},
				dataType:"json",
				success:function(d){
					if(d.code==200){
						//刷新表格
						freshPage($);
					}
				}
			})
		}
		
		function updateUser(that){
			var userName = $("input[name=newUserName]").val();
			var passWord = $("input[name=newPassWord]").val();
			var id=$("input[name=user_id]").val();
			$.ajax({
				url:"user/update.do",
				type:"post",
				data:{userName:userName,passWord:passWord,id:id},
				dataType:"json",
				success:function(d){
					$('#updateUser').modal('hide');
					if(d.code==200){
						//刷新表格
						freshPage($);
					}
				}
			})
		}
		//触发模态框的同时调用此方法  
		function addInfo(that) {  
		    //先清空模态框中的输入框内容
		     $('#addUserName').val("");  
		     $('#addPassWord').val("");  
		  	 $('#update').modal('show');  
		}  
		
		//触发模态框的同时调用此方法  
		function editInfo(that) {  
		    //获取表格中的一行数据  
		     var id=$(that).parent().parent().children().eq(1).text()
		    var userName = $(that).parent().parent().children().eq(2).text()
		    var passWord = $(that).parent().parent().children().eq(3).text()
		    //向模态框中传值  
		     $('#user_id').val(id);  
		    $('#userName').val(userName);  
		    $('#passWord').val(passWord);  
		   $('#update').modal('show');  
		}  

		//上一页
		function prePage(){
			if(page == 1){
				alert("已经是第一页了");
			}else{
				page = page - 1;
				 freshPage($);
			}
		}

		//下一页
		function nextPage(){
			if(page ==pages){
				alert("已经是最后一页了");
			}else{
				page = page + 1;
				 freshPage($);
			}
		}	
	</script>

(2)再看后台代码:

User实体类:

package model;
import java.io.Serializable;
	/**
	 *由于对象 是保存在内存中的,要保存到数据库中就需要实现Serializable接口
	 */
	public class User implements Serializable{
		private static final long serialVersionUID = 1L;
		
		private Integer id;
		private String userName;
		private String passWord;
		
		public Integer getId() {
			return id;
		}
		public void setId(Integer 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;
		} 
}

UserController.java:

package controller;

import java.util.HashMap;
import java.util.Map;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import model.User;
import service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
	@Autowired
	private UserService userService;
	
	@RequestMapping("/list")
	@ResponseBody  
	public Map<String,Object> list(Integer page,Integer rows) {
		return userService.findUser(page,rows);
	}
	
	
	@RequestMapping("/save")
	@ResponseBody  
	public Map<String,Object> save(User user) {
		int res =  userService.saveUser(user);
		Map<String,Object> map = new HashMap<String,Object>();
		if(res == 1) {
			map.put("code",200);
		}else{
			map.put("code", 500);
		}
		return map;
	}
	
	@RequestMapping("/del")
	@ResponseBody  
	public Map<String,Object> del(Integer id) {
		int res = userService.delUserById(id);
		Map<String,Object> map = new HashMap<String,Object>();
		if(res == 1) {
			map.put("code",200);
		}else{
			map.put("code", 500);
		}
		return map;
		
	}
	
	@RequestMapping("/update")
	@ResponseBody  
	public Map<String,Object> update(User user) {
		int res = userService.updateUser(user);
		Map<String,Object> map = new HashMap<String,Object>();
		if(res == 1) {
			map.put("code",200);
		}else{
			map.put("code", 500);
		}
		return map;
	}
}

UserService.java和UserServiceImpl.java:

package service;

import java.util.Map;

import model.User;

public interface UserService {
	public int saveUser(User user);
	
	public int delUserById(Integer id);
	
	public int updateUser(User user);
	
	public Map<String, Object> findUser(Integer page,Integer rows);

}
package service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import dao.UserDao;
import model.User;
import service.UserService;


@Service("userService") //注意这里的别名是为了之后若要重写UserServiceImpl类而相互区分的标记
public class UserServiceImpl implements UserService {

	@Autowired
	private UserDao userDao;
	@Override
	public int saveUser(User user) {
		return userDao.saveUser(user);
	}
	@Override
	public int delUserById(Integer id) {
		return userDao.delUserById(id);
	}
	@Override
	public int updateUser(User user) {
		return userDao.updateUser(user);
	}
	@Override
	public Map<String, Object> findUser(Integer page,Integer rows) {
		Integer startIndex = (page-1)*rows;
		List<User> users = userDao.findUser(startIndex, rows);
		Integer total = userDao.findTotal();
		Integer pages = (total+rows-1)/rows;
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("data", users);
		map.put("pages", pages);
		return map;
	}

}

userDao.java和userMapper.xml:

package dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import model.User;

public interface UserDao {
	
	public int saveUser(User user);
	
	public int delUserById(Integer id);
	
	public int updateUser(User user);
	
	public List<User> findUser(@Param("startIndex") Integer startIndex, @Param("rows") Integer rows);

	public Integer findTotal();
	
}
<?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="dao.UserDao">
	<insert id="saveUser" parameterType="User">
		insert into t_user (user_name,pass_word) value (#{userName},#{passWord})
	</insert>

	<delete id="delUserById" parameterType="int">
		delete from t_user where id=#{id}
	</delete>

	<update id="updateUser" parameterType="User">
		update t_user set user_name=#{userName} ,pass_word=#{passWord} where id=#{id}
	</update>

	<!--当数据库的列名和实体类的属性名不相同时,要配置resultMap -->
	<resultMap type="User" id="UserMap">
		<id column="id" property="id"/>
		<result column="user_name" property="userName"/>
		<result column="pass_word" property="passWord"/>
	</resultMap>
	
	<!--分页查询  -->
	<select id="findUser" resultMap="UserMap">
		select * from t_user limit #{startIndex} ,#{rows}
	</select>
	<select id="findTotal" resultType="int">
		select count(1) from t_user
	</select>
	
	
	
	
</mapper>

 

猜你喜欢

转载自blog.csdn.net/Carl_changxin/article/details/81865713