使用mybatis将数据库中的记录
1.前台jsp页面,将要删除的记录选中,通过将记录的id对记录进行区别,请求方法为post;
2.使用jQuery,js对页面进行全选,或全部清除选择。
3.servlet控制层,通过req对象获取id,然后将存放id数组进行参数类型转换,转为int[];
4.sevice服务层,使用数据库连接池,获取SqlSession实例对象,由session对象获取Mybatis框架创建的接口的实例,通过声明接口中处理批量删除的方法,配置接口对应的xml配置文件。
1,前台jsp页面
pageEncoding="UTF-8"%>
商品列表$(function(){
$("#checkAll").click(function(){
var ckd=this.checked;
if(ckd)
$("input[name='checkedPrdId']").prop("checked",true);
else
$("input[name='checkedPrdId']").removeProp("checked");
});
});
table,table td{
border:1px solid black;
}
table {
border-collapse: collapse;
}
table td{
width: 200px;
height: 20px;
}
prdList
${msg}
商品编号商品类别商品名称商品价格商品描述
${prd.prdId}${prd.typeId}${prd.prdName}${prd.price}${prd.desc}2.servlet类的post方法的实现
package com.xixi.demo.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.javafx.collections.MappingChange.Map;
import com.xixi.demo.common.Constants;
import com.xixi.demo.service.ProductService;
import com.xixi.demo.service.ProductTypeService;
import com.xixi.demo.vo.ProductInfo;
import com.xixi.demo.vo.ProductTypeInfo;
@WebServlet(urlPatterns="/prdServlet")
public class ProductServlet extends BaseServlet {
private ProductService productService = new ProductService();
private ProductTypeService productTypeService = new ProductTypeService();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String flag = req.getParameter("flag");
if("add".equals(flag)){
...
}else if("search".equals(flag)){
...
}else if("batchDelete".equals(flag)){
int count = 0;
String[] values = req.getParameterValues("checkedPrdId");
if(values!=null&&values.length>0 ){
int[] prdId = new int[values.length];
for(int i=0; i
prdId[i] = Integer.parseInt(values[i]);
}
count = this.productService.batchDelete(prdId);
}
req.setAttribute("msg", "删除"+count+"条记录!");
//获取产品列表
List prdList = this.productService.getAllProducts();
req.setAttribute("prdList", prdList);
req.getRequestDispatcher("/prd/prd_list.jsp").forward(req, resp);
}
}
}
3.service层实现
package com.xixi.demo.service;
import com.sun.javafx.collections.MappingChange.Map;
import com.xixi.demo.common.Constants;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.xixi.demo.common.DBUtils;
import com.xixi.demo.dao.ProductMapper;
import com.xixi.demo.vo.ProductInfo;
public class ProductService {
/**
*
*获取所有产品
*
* @return
*/
public List getAllProducts() {
...
}
/**
*
* 商品检索
*
* @param condition
* @param pageNum
* @return
*/
public List search(HashMap condition, int pageNum) {
...
}
/**
*
* 获取总页数
*
* @param condition
* @return
*/
public int getPageCount(HashMap condition) {
...
}
/**
* 批量删除
*
* @param prdId
* @return
*/
public int batchDelete(int[] prdId) {
SqlSession session = DBUtils.getSqlSession();
ProductMapper prdMapper = session.getMapper(ProductMapper.class);
int count=0;
try {
count = prdMapper.batchDelete(prdId);
session.commit();
} catch (Exception e) {
session.rollback();
e.printStackTrace();
} finally {
session.close();
}
return count;
}
}
4.DAO层的mybatis框架接口实现
package com.xixi.demo.dao;
import java.util.HashMap;
import java.util.List;
import com.sun.javafx.collections.MappingChange.Map;
import com.xixi.demo.vo.ProductInfo;
public interface ProductMapper {
//获取所有的产品
List getAllProducts();
//通过某一个产品编号查询产品信息
ProductInfo getInfoById(Integer prdId);
//录入新的商品
int saveInfo(ProductInfo info);
//检索商品
List search(HashMap condition);
//获取产品记录条数
int getRecordCount(HashMap condition);
//批量删除
int batchDelete(int[] prdId);
}
5.DAO层的mybatis框架接口对应的xml配置文件的实现
delete from products where productId IN
#{id}
注意:
mybatis对于批量删除的过程中,参数为一个数组的情况,我们采用mybatis提供的标签将参数进行逐个与数据库id进行比对,完成批量删除操作。