启程网络(新简约软件开发工作室)
email hbqcwl@sina.cn

第11课 使用更新语句修改留言 2021年11月02日 16:36     阅读(275)

通过使用 update 语句,去更新表中的数据。同时学会如何给页面 input 标签传值。

第1步,了解 update 语法

数据库的数据修改时,使用update 语句,语法如下:

update 表名 set 字段1=值1,字段2=值2,字段3=值3 where 字段1=字段1值

update 表名 set 字段1=值1,字段2=值2,字段3=值3 where 字段1=字段1值

上节课学了查询语法,我们查询留言数据如下图所示:


划出来这个 null 在数据库中代表没有任何值。

下面我们学习使用 update 把  author 赋值为李白,那更新脚本为:

update liuyanban set author = '李白' where id = 16;
执行脚本后,我们查询数据,看有没有变化,查询结果如下图所示:



已成功更新数据。

第2步,在 LiuyanbanMapper.java添加更新用到的方法

在 liuyanbanMapper.java 中添加2个方法,如下图所示:



具体代码如下:
	/**
	 * 根据id 获取留言板数据
	 * @param id
	 * @return
	 */

	public Liuyanban selectLiuyanbanById(String id);
	/**
	 * 更新留言数据
	 * @param model
	 * @return
	 */
	public int updateLiuyanban(Liuyanban model);




第3步,在 LiuyanbanMapper.xml 中配置更新用的 xml

添加一个 update 的更新语句,如下图所示:



具体代码如下:

	<select id="selectLiuyanbanById" resultType="cn.qcwl.model.Liuyanban">
		select id,title,content,author,add_time from liuyanban
		where id=#{id}
	</select>
	
	<update id="updateLiuyanban" >
		update liuyanban
		set title=#{title},content=#{content},author=#{author}
		where id=#{id}
	</update>
注意,一定要写 where 条件,否则会更新所有的数据。

第4步,在 controller 添加更新方法

有了前面的更新数据了,那controller 中修改有一个方法进行接收要修改的数据。

需要添加一个方法,接收留言的 id 值,具体如下图所示:



代码中先通过 id 找到 留言数据,然后把数据输出到jsp页面中。最后重新查询数据,返回页面视图。
具体代码如下:

	@RequestMapping("editLiuyan")
	public String editLiuyan(Model model,int id) {
		Liuyanban liuyanbanModel =liuyanbanMapper.selectLiuyanbanById(id);
		if (liuyanbanModel!=null) {
			model.addAttribute("liuyan", liuyanbanModel);
		}else {
			model.addAttribute("error", "无效的id值");
		}
		List<Liuyanban> liuyanList = liuyanbanMapper.selectLiuyanban();
		model.addAttribute("liuyanList", liuyanList);
		return "index";
	}


第5步,修改jsp页面

需要把后台传过来的留言数据,赋给 input 输入控件,如下图所示:



注意看标出来的部分,给 input 赋值,是给 value 进行传值。
此外还添加了一行用于显示错误信息的标签及一个隐藏域,隐藏域是用来提交id值到后台。
这里是个关键,需要注意一下

具体代码如下:

<form action="/saveLiuyan" method="post">
	<div class="form-group">
		<label for="ly_title">标题</label>
		<input type="text" class="form-control" id="ly_title" 
			name="ly_title" placeholder="标题" value="${liuyan.title }">
	</div>
	<div class="form-group">
		<label for="ly_content">内容</label>
		<input type="text" class="form-control" id="ly_content" 
			name="ly_content" placeholder="内容" value="${liuyan.content }">
	</div>
	<div class="form-group">
		<label for="ly_author">留言人</label>
		<input type="text" class="form-control" id="ly_author" 
			name="ly_author" placeholder="留言人" value="${liuyan.author }">
	</div>
	<div>
		<label class="label label-warning ">${error}</label>
	</div>
	<div>
		<input type="hidden"  name="id" value="${liuyan.id }" >
		<button class="button">提交留言 </button>
	</div>
</form>

第6步,添加一个修改按纽

前面主要功能做完了,下需还需要有一个修改按纽,点修改,则跳转到 editLiuyan ,然后显示数据。

添加修改按纽如下图所示:



在列表中添加了一个操作列,同时内容显示中也添加了一个 a 超链接标签。

注意看 href 这个属性,这里调用 editLiuyan同时给传了一个 id 的值。在地址和值之间用的是?号进行的分隔。

第7步,对保存方法进行修改

保存方法用的是 saveLiuyan,原方法如下图所示:



我们需要添加一个 id 参数,用来接收前台传入的 id 值,修改后的代码如下图所示:



1. 需要接收一个id参数
2. 保存前要判断id是否为null
具体代码如下:

	@RequestMapping("saveLiuyan")
	public void saveLiuyan(Model model,String ly_title,String ly_content,String ly_author,
			Integer id, // 新添加一个 id 属性
			HttpServletRequest request,HttpServletResponse response) throws IOException {
		Liuyanban liuyanbanModel = new Liuyanban();
		liuyanbanModel.setTitle(ly_title);
		liuyanbanModel.setContent(ly_content);
		liuyanbanModel.setAuthor(ly_author);
		if (id==null) {
			liuyanbanMapper.insertLiuyanban(liuyanbanModel);
		}else {
			liuyanbanModel.setId(id);
			liuyanbanMapper.updateLiuyanban(liuyanbanModel);
		}
		response.sendRedirect("/");
	}

第8步,运行程序,测试修改是否有效

运行程序,按下图顺序操作。



提交留言后,列表如下图所示:



此时已修改完成。本课结束啦

代码下载地址

百度云盘下载
链接:https://pan.baidu.com/s/1A33BkiUxq0yg8yvIkkx0pA 
提取码:mpsm 


原创文章,转载请注明本文链接地址(违者必究): 第11课 使用更新语句修改留言

打赏作者很喜欢这篇文章,打赏犒劳下作者,以此激励作者创作更多
微信打赏
支付宝打赏