Test_Shop项目功能实现五

本文介绍如何使用MyBatis实现批量删除商品功能,包括配置数据库连接、创建实体类、DAO层接口、Mapper文件及SQL语句,以及Service层逻辑与Junit测试。从配置到测试,全面解析批量删除的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

批量删除功能
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");
		//获取ID数组
		for (String id : idary) {
			System.out.println(id);
		}
		//调用service
		ProductService productService = new ProductServiceImpl();
		boolean bath = productService.delBath(idary);
		//界面跳转
		resp.sendRedirect(req.getContextPath()+"/product/ProductListAction");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值