此项目实例为springMVCDB
一、数据检索更新
分析:要实现的效果是在第一个页面文本框中输入一个数值,点击检索,然后在第二个页面的文本框中显示。然后在这个文本框中输入新数据,点击更新按钮,数据库中的文件及文本框中的数据被改写。需要注意的是此操作是检索的userid,而要更新的则是它对应的username的值。
功能实现思路:
先实现数据更新,即在控制中用searchUser的方法实例化一个存放结果集的bean。然后是进行数据改写,就是实例化一个update的方法,将结果给bean。并用一个if语句判断数据是否更新,在第三个页面中显示是否成功。
HelloWorldController.java
@RequestMapping(value = "/init", method = RequestMethod.POST)
public String initLogin(UserBean userBean, Model model) {
UserBean result = helloWorldService.searchUser(userBean);
model.addAttribute("userBean", result); return "login";
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String initUpdate(UserBean userBean, Model model) {
int result=helloWorldService.update(userBean);
if(result!=1) {
model.addAttribute("message", "NO");
}else{
model.addAttribute("message", "OK");
} return "result"; }
2.然后在service页面中设置frm的一个变量,来取bean中的值,然后在更新
HelloWorldService.java
public UserBean searchUser(UserBean frm) {
frm = queryDao.executeForObject("User.selectUser", frm, UserBean.class);
return frm; }
public int update(UserBean frm) {
return updateDao.execute("User.updateUser", frm); }
3.用SQL语句查询数据库中的数据,然后更新数据库中对应ID的username
UserSqlMap.xml
<select id="selectUser"
parameterClass="cn.training.bean.UserBean"
resultClass="cn.training.bean.UserBean">
SELECT
userid as userId,userName
FROM user
WHERE
userid = #userId#
</select>
update语句更新数据(******更新设置user表中的#userName#在id为#userId#处更新******
)
<update id="updateUser" parameterClass="cn.training.bean.UserBean">
update user set userName=#userName#
WHERE userid = #userId#
</update>
二、加载列表
分析:实现效果就是查询数据库中的数据,将数据库中的数据以列表形式显示出来
1.用查询语句查询表中的所有数据
UserSqlMap.xml
<select id="selectUser"
parameterClass="cn.training.bean.UserBean"
resultClass="cn.training.bean.UserBean">
SELECT userid as userId,userName
FROM user
2.查询的结果放在一个泛型为bean的列表集中
HelloWorldController.java
@RequestMapping(value = "/init", method = RequestMethod.POST)public String initLogin(UserBean userBean, Model model) {
List<UserBean> result = helloWorldService.searchUser(userBean);
model.addAttribute("list", result); return "login";}
3.写一个列表的方法将bean中存放的数据取出来,给这个列表集,取的为整个列表数据
HelloWorldService.java
public List<UserBean> searchUser(UserBean frm) {
List<UserBean> result=queryDao.executeForObjectList("User.selectUser", frm); //此方法为取列表中所有数据,list为接口类型的
return result; }
4.在跳转页面显示用一个c:forEach 语句进行遍历取值
login.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> //此句为导入C标签
<body>
<c:forEach items="${list}" var="user" varStatus="status">
${userBean.userId}
${userBean.userName}
</c:forEach>
</body>
三、.删除列表中数据
分析:效果就是,检索出数据库里的值以列表显示,然后删除数据库中的id的同时也删除ID对应的username的值。最后数据库中的数据也会更新,页面被删除的数据数据库中也被删除。
1.检索出所有的数据,然后写一个SQL的delete删除语句
UserSqlMap.xml
<select id="selectUser" parameterClass="cn.training.bean.UserBean" resultClass="cn.training.bean.UserBean"> SELECT userid as userId,userName FROM user </select> <delete id="deleteUser" parameterClass="cn.training.bean.UserBean"> delete from user where userid=#userId# </delete>
2.在控制页面实例化一个删除
HelloWorldController.java
@RequestMapping(value = "/init", method = RequestMethod.POST)public String initLogin(UserBean userBean, Model model) { List<UserBean> result = helloWorldService.searchUser(userBean); model.addAttribute("list", result);return "login"; }@RequestMapping(value = "/delete", method = RequestMethod.GET) public String (UserBean userBean, Model model) { int result = helloWorldService.(userBean); return "login"; }
3.写一个删除的方法,删除frm为检索条件的值然后更新数据
HelloWorldService.java
public List<UserBean> searchUser(UserBean frm) { List<UserBean> result=queryDao.executeForObjectList("User.selectUser", frm); return result; } public int delete(UserBean frm) { return updateDao.execute("User.deleteUser", frm); }
4.使用forEach语句遍历列表,用一个table表存放读出来的数据,然后将第一列ID的值设为一个可以进行删除的路径,即链接一个可以delete指定ID的路径,然后删除ID,同时删除username。
login.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <body> <c:forEach items="${list}" var="user" varStatus="status"> <table> <tr> <td> <a href="delete?userId=${user.userId}">${user.userId}</td> <td>${user.userName}</td> </tr> </table> </c:forEach>