SpringMVC就是一个封装sevlet层的框架,有了这个框架,我们写JAVAEE的程序时,就不再需要自己去写sevlet,由于springmvc提供了一个总的sevlet:dispatcherServlet,只需要写普通的类,普通的方法,加上注解,即可。
它属于三大框架的一个,其实它也是Spring后来发展抽取出来的一个模块。如果我们已经用MyBatis对我们的数据库进行了处理,按之前的方法是写servlet来调用操作数据库的方法将后台数据显示在前端页面上,但是有了SpringMVC之后就可以更好的做这项工作了,而且代码的简洁程度也得到了很大的提升,所以使用框架的好处显而易见了。
下面我介绍一下这一框架的简单使用,在写网上商城的时候,用户模块和商品模块其实好多操作都是相同的,所以我在这儿写一下商品这个模块,之前MyBatis对于数据库的操作是写在一个mapper包中,在这里,我们将调用数据库操作方法的方法卸载一个controller包中。
程序中的pojo层中是一个关于product数据库的实体类记录了id,name,price,description四个属性
mapper层就是使用MyBatis框架对于数据库的操作和实现,即是增删改查
所以框架对于开发效率的提高是有很大作用的。
ProductService接口:
为了更好实现这个模式,接下来还需要学习Spring,它是一种粘合剂。
更多点击下面:
MyBatis的基本使用
它属于三大框架的一个,其实它也是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<Product> 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<Product> list = productService.findAll();
model.addAttribute("plist", list);
return "/WEB-INF/jsps/productall.jsp";
}
/**
* 批量更新商品信息
*
* @return
*/
@RequestMapping("/updatelist")
public String updatelist(ProductVO pvo) {
List<Product> 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<Product> 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<Product> 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<Product> findAll() {
SqlSession session = MybatisSessionFactoryUtils.getSqlSession();
ProductMapper mapper = session.getMapper(ProductMapper.class);
List<Product> 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<Product> 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,它是一种粘合剂。
更多点击下面:
MyBatis的基本使用
本文介绍SpringMVC框架在商品管理系统中的应用,展示了如何通过简单的代码实现商品信息的增删改查等功能,有效提升开发效率。

3850

被折叠的 条评论
为什么被折叠?



