首页 > 程序开发 > 综合编程 > 其他综合 >

SSM框架之SpringMVC(1)--Mybatis和SpringMVC的整合

2017-03-06

SSM框架之SpringMVC(1)--Mybatis和SpringMVC的整合,SpringMVC就是一个封装sevlet层的框架,有了这个框架,我们写JAVAEE的程序时,就不再需要自己去写sevlet,由于springmvc提供了一个总的sevlet。

SpringMVC就是一个封装sevlet层的框架,有了这个框架,我们写JAVAEE的程序时,就不再需要自己去写sevlet,由于springmvc提供了一个总的sevlet:dispatcherServlet,只需要写普通的类,普通的方法,加上注解,即可。
它属于三大框架的一个,其实它也是Spring后来发展抽取出来的一个模块。如果我们已经用MyBatis对我们的数据库进行了处理,按之前的方法是写servlet来调用操作数据库的方法将后台数据显示在前端页面上,但是有了SpringMVC之后就可以更好的做这项工作了,而且代码的简洁程度也得到了很大的提升,所以使用框架的好处显而易见了。
下面我介绍一下这一框架的简单使用,在写网上商城的时候,用户模块和商品模块其实好多操作都是相同的,所以我在这儿写一下商品这个模块,之前MyBatis对于数据库的操作是写在一个mapper包中,在这里,我们将调用数据库操作方法的方法卸载一个controller包中。
程序中的pojo层中是一个关于product数据库的实体类记录了id,name,price,description四个属性
mapper层就是使用MyBatis框架对于数据库的操作和实现,即是增删改查

我重点写下controller层的代码:

package cn.edu360.controller;

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.edu360.pojo.Product;
import cn.edu360.pojo.ProductVO;
import cn.edu360.service.ProductService;
import cn.edu360.service.ProductServiceImpl;

/**
 * 对于商品数据的响应和处理方法
 * 
 * @author Administrator
 *
 */
@Controller
@RequestMapping("/product")
public class ProductController {
	private ProductService productService = new ProductServiceImpl();
	
	/**
	 * 查找所有商品信息,并返回
	 * 
	 * @param model
	 * @return
	 */

	@RequestMapping("/findall")
	public String findall(Model model) {
		List list = productService.findAll();
		model.addAttribute("plist", list);
		return "/WEB-INF/jsps/productlist.jsp";
	}

	/**
	 * 跳转至增加商品页面
	 * 
	 * @return
	 */
	@RequestMapping("/toadd")
	public String toadd() {
		return "/WEB-INF/jsps/toadd.jsp";
	}

	/**
	 * 向数据库中增加商品信息
	 * 
	 * @param product
	 * @return
	 */
	@RequestMapping("/add")
	public String add(Product product) {
		productService.addProduct(product);
		return "redirect:/product/findall.do";
	}

	/**
	 * 根据id删除相应商品
	 * 
	 * @param id
	 * @return
	 */
	@RequestMapping("/delete")
	public String delete(Long id) {
		productService.deleteById(id);
		return "redirect:/product/findall.do";
	}

	/**
	 * 跳转至更新页面,并回显现有信息
	 * 
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/toupdate")
	public String toupdate(Long id, Model model) {
		Product product = productService.toUpdate(id);
		model.addAttribute("product", product);
		return "/WEB-INF/jsps/productupdate.jsp";
	}

	/**
	 * 更新传来的商品信息
	 * 
	 * @param product
	 * @return
	 */
	@RequestMapping("/update")
	public String update(Product product) {
		productService.update(product);
		return "redirect:/product/findall.do";
	}

	/**
	 * 批量删除商品信息
	 * 
	 * @param ids
	 * @return
	 */
	@RequestMapping("/deletelist")
	public String deletelist(Long[] ids) {
		productService.deleteList(ids);
		return "redirect:/product/findall.do";
	}

	/**
	 * 跳转至批量更新商品页面
	 * 
	 * @return
	 */
	@RequestMapping("/toupdatelist")
	public String toupdatelist(Model model) {
		List list = productService.findAll();
		model.addAttribute("plist", list);
		return "/WEB-INF/jsps/productall.jsp";
	}

	/**
	 * 批量更新商品信息
	 * 
	 * @return
	 */
	@RequestMapping("/updatelist")
	public String updatelist(ProductVO pvo) {
		List list = pvo.getList();
		productService.updatelist(list);
		return "redirect:/product/findall.do";
	}
}
其中对于session以及SQLSessionFactory等等这一部分代码其实都是套路,所以我将它们封装到一个service中,service是面向接口编程的,也就是在写的时候都是重复其实真正写的代码就是mapper调用相应方法的那几行。
所以框架对于开发效率的提高是有很大作用的。
ProductService接口:
package cn.edu360.service;

import java.util.List;

import cn.edu360.pojo.Product;

public interface ProductService {

	public List findAll();
	
	public void addProduct(Product product);
	
	public void deleteById(Long id);
	
	public Product toUpdate(Long id);
	
	public void update(Product product);
	
	public void deleteList(Long[] ids);
	
	public void updatelist(List list);
}
ProductServiceImpl接口实现:
package cn.edu360.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import cn.edu360.mapper.ProductMapper;
import cn.edu360.pojo.Product;
import cn.edu360.util.MybatisSessionFactoryUtils;

public class ProductServiceImpl implements ProductService {

	@Override
	public List findAll() {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		List list = mapper.findAll();
		session.close();
		return list;
	}

	@Override
	public void addProduct(Product product) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		try {
			mapper.save(product);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
	}

	@Override
	public void deleteById(Long id) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		try {
			mapper.deleteById(id);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
	}

	@Override
	public Product toUpdate(Long id) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		Product product = null;
		try {
			product = mapper.getById(id);
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}

		return product;
	}

	@Override
	public void update(Product product) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		try {
			mapper.update(product);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
	}

	@Override
	public void deleteList(Long[] ids) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		try {
			mapper.deleteByIds(ids);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
	}

	@Override
	public void updatelist(List list) {
		SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
		ProductMapper mapper = session.getMapper(ProductMapper.class);
		try {
			for (Product product : list) {
				mapper.update(product);
				session.commit();
			}
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
	}

}
其实上面的service,mapper,pojo以及controller层构成了我们web开发的基本框架,这就是mvc设计模式将业务逻辑,控制层,数据处理层,视图,数据库分开,解耦合,可以更好的提高工作效率。
为了更好实现这个模式,接下来还需要学习Spring,它是一种粘合剂。
相关文章
最新文章
热点推荐