批量删除功能
4.1 根据商品ID的数组,完成批量删除逻辑
4.2 页面跳转测试
4.3 加入业务逻辑,完成删除功能
4.4 返回商品展示界面,重新调用展示商品逻辑
1、首先在mybatis-config.xml内配置数据库连接信息及Mapper文件路径
<!-- 配置数据库连接信息 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="hr"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper文件的路径 -->
<mappers>
<mapper resource="com/rj182/dao/ProductMapper.xml"/>
</mappers>
2、创建实体类并实现方法构造
public class Product {
private int proId;
private String proName;
private String proBrief;
private double proPrice;
private int proCount;
private int proStatus;
private Date proCreateDate;
public Product() {
super();
}
public Product(int proId, String proName, String proBrief, double proPrice, int proCount, int proStatus,
Date proCreateDate) {
super();
this.proId = proId;
this.proName = proName;
this.proBrief = proBrief;
this.proPrice = proPrice;
this.proCount = proCount;
this.proStatus = proStatus;
this.proCreateDate = proCreateDate;
}
public int getProId() {
return proId;
}
public void setProId(int proId) {
this.proId = proId;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public String getProBrief() {
return proBrief;
}
public void setProBrief(String proBrief) {
this.proBrief = proBrief;
}
public double getProPrice() {
return proPrice;
}
public void setProPrice(double proPrice) {
this.proPrice = proPrice;
}
public int getProCount() {
return proCount;
}
public void setProCount(int proCount) {
this.proCount = proCount;
}
public int getProStatus() {
return proStatus;
}
public void setProStatus(int proStatus) {
this.proStatus = proStatus;
}
public Date getProCreateDate() {
return proCreateDate;
}
public void setProCreateDate(Date proCreateDate) {
this.proCreateDate = proCreateDate;
}
@Override
public String toString() {
return "Product [proId=" + proId + ", proName=" + proName + ", proBrief=" + proBrief + ", proPrice=" + proPrice
+ ", proCount=" + proCount + ", proStatus=" + proStatus + ", proCreateDate=" + proCreateDate + "]";
}
}
3、创建Dao层接口
4、创建Mapper文件并引入Dao层接口及实体类,然后编入映射及SQL语句。
<!-- 映射 -->
<resultMap type="com.rj182.entity.Product" id="BaseResultMap">
<id column="pro_Id" property="proId"/>
<result column="pro_Name" property="proName"/>
<result column="pro_Brief" property="proBrief"/>
<result column="pro_Price" property="proPrice"/>
<result column="pro_Count" property="proCount"/>
<result column="pro_Status" property="proStatus"/>
<result column="pro_Create_Date" property="proCreateDate"/>
</resultMap>
<!-- 批量删除 -->
<delete id="deleteBath">
DELETE FROM product WHERE pro_id in
<foreach collection="idary" open="(" item="id" close=")" separator=",">
#{id}
</foreach>
</delete>
5、在Dao层接口编写方法并创建Service层接口
public int deleteBath(@Param("idary")String[] idary);
6、在Service层接口编写逻辑方法并创建Service实现层
public boolean delBath(String[] idary);
7、在Service实现层编写逻辑方法并创建Junit测试类进行测试
public boolean delBath(String[] idary) {
SqlSession session = MyBatisUtil.getSqlSession();
ProductDao productDao = session.getMapper(ProductDao.class);
int bath = productDao.deleteBath(idary);
session.commit();
MyBatisUtil.close();
if (bath> 0) {
return true;
}
return false;
}
8、在Servlet层创建.class文件并继承HttpServlet方法进行代码编写且添加@WebServlet注释
@WebServlet("/product/productBatchDelete.action")
public class ProductDeleteBathAction extends HttpServlet{
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String[] idary = req.getParameterValues("id");
for (String id : idary) {
System.out.println(id);
}
ProductService productService = new ProductServiceImpl();
boolean bath = productService.delBath(idary);
resp.sendRedirect(req.getContextPath()+"/product/ProductListAction");
}
}