update数据库更新语句的时候,把表里所有的数据都更新了

经过来回的检查,发现是SQL语句没有加条件语句

修改前

	<update id="update">
			UPDATE smbms_user SET userCode=#{userCode},userName=#{userName},userPassword=#{userPassword},gender=#{gender},birthday=#{birthday},phone=#{phone},address=#{address},userRole=#{userRole},createdBy=#{createdBy},creationDate=#{creationDate},idPicPath=#{idPicPath}
		</update>

修改后

	<update id="update">
			UPDATE smbms_user SET userCode=#{userCode},userName=#{userName},userPassword=#{userPassword},gender=#{gender},birthday=#{birthday},phone=#{phone},address=#{address},userRole=#{userRole},createdBy=#{createdBy},creationDate=#{creationDate},idPicPath=#{idPicPath}
			WHERE id=#{id}
		</update>

测试类

		//更新
		User user=new User();
		user.setId(21);
		user.setUserCode("21");
		user.setUserName("lalaalall");
		int count=session.getMapper(userDao.class).update(user);

重点在于WHERE id=#{id}
没有加,那么表中的数据,都会变成你想加的那一条
在这里插入图片描述

但是这个更新,会把没有其余没有更新的其他值变为空
在这里插入图片描述
可修改SQL语句

		<update id="update">
		UPDATE smbms_user 
		<set>
			<if test="userCode!=null and userCode!=''">userCode=#{userCode},</if>
			<if test="userName!=null and userName!=''">userName=#{userName},</if>
			<if test="userPassword!=null and userPassword!=''">userPassword=#{userPassword},</if>
			<if test="gender!=null">gender=#{gender},</if>
			<if test="birthday!=null">birthday=#{birthday},</if>
			<if test="phone!=null and phone!=''">phone=#{phone},</if>
			<if test="address!=null and address!=''">address=#{address},</if>
			<if test="userRole!=null">userRole=#{userRole},</if>
			<if test="modifyBy!=null">modifyBy=#{modifyBy},</if>
			<if test="true">modifyDate=NOW(),</if>
			<if test="idPicPath!=null and idPicPath!=''">idPicPath=#{idPicPath},</if>
		</set>
		WHERE id=#{id}
		</update>
	User user = new User();
		user.setUserName("小杨过");
		user.setId(14);
		int count = session.getMapper(UserDao.class).update(user);

在这里插入图片描述

在Servlet中,您可以使用SQL语句来修改数据表中的数据。下面是一个示例代码,演示如何在Servlet中使用SQL语句进行数据修改: ```java import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; @WebServlet("/updateUser") public class UpdateUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取表单参数 String userId = request.getParameter("userId"); String newName = request.getParameter("newName"); String newEmail = request.getParameter("newEmail"); // 数据库连接信息 String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; // 执行SQL语句 try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) { String sql = "UPDATE users SET name=?, email=? WHERE id=?"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, newName); statement.setString(2, newEmail); statement.setString(3, userId); int rowsAffected = statement.executeUpdate(); if (rowsAffected > 0) { // 数据修改成功 response.getWriter().println("Data updated successfully."); } else { // 数据修改失败 response.getWriter().println("Failed to update data."); } } catch (SQLException e) { e.printStackTrace(); response.getWriter().println("An error occurred while updating data."); } } } ``` 上述代码示例假设您使用MySQL数据库数据库名为`mydatabase`,表名为`users`,包含列`id`、`name`和`email`。 请根据您的实际情况修改数据库连接信息和SQL语句。这段代码接收来自表单的参数,并执行UPDATE语句更新指定用户的姓名和电子邮件。根据执行结果,它会返回相应的消息给客户端。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值