在第二個版本上添加了姓名模糊查詢,年齡區間查詢;自以為easy,結果發現mybatis的各種參數寫法基本搞混或是忘了,zuo啊,直接上代碼,然后趕緊把mybatis整理一遍再研究自己的項目,應該還會有個版本4,基本就可以搬到實際項目上使用了,話說自己的項目要抓緊了,最近做的有點慢,也是沒辦法,工作偏忙,空閑時想看的東西太多,還是要科學計划一下,
參考資料
1 ibatis2.x與mybatis(ibatis3.x)的比較
http://zhaohe162.blog.163.com/blog/static/382167972011111114742371/
2 MyBatis學習 之 三、動態SQL語句
http://limingnihao.iteye.com/blog/782190
package com.mi.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.mi.form.PageTableForm; import com.mi.service.impl.UserInfoServiceImpl; @Controller @RequestMapping("/user") public class UserInfoCotroller { @Autowired private UserInfoServiceImpl userInfoServiceImpl; private PageTableForm pageTableForm; @RequestMapping("/init") public String init(Model model) { pageTableForm = new PageTableForm(); return "redirect:/user/query.do"; } @RequestMapping("/query") public String queryUserInfo(Model model,HttpServletRequest request, PageTableForm pageTableForm) { String name = request.getParameter("name")!=null ? request.getParameter("name") : null; String ageFrom = (request.getParameter("ageFrom")!=null ? request.getParameter("ageFrom") : null); String ageTo = (request.getParameter("ageTo")!=null ? request.getParameter("ageTo") : null); if(name!=null){ pageTableForm.setName(name); } pageTableForm.setAgeFrom(ageFrom); pageTableForm.setAgeTo(ageTo); pageTableForm = userInfoServiceImpl.queryUserInfo(pageTableForm); model.addAttribute("pageTableForm", pageTableForm); return "userInfo"; } public UserInfoServiceImpl getUserInfoServiceImpl() { return userInfoServiceImpl; } public void setUserInfoServiceImpl(UserInfoServiceImpl userInfoServiceImpl) { this.userInfoServiceImpl = userInfoServiceImpl; } public PageTableForm getPageTableForm() { return pageTableForm; } public void setPageTableForm(PageTableForm pageTableForm) { this.pageTableForm = pageTableForm; } }
package com.mi.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mi.dao.UserInfoMapper; import com.mi.entity.User; import com.mi.form.PageTableForm; import com.mi.service.UserInfoService; @Service("userInfoService") public class UserInfoServiceImpl implements UserInfoService { @Autowired private UserInfoMapper userInfoMapper; private List<User> userList; @Override public PageTableForm queryUserInfo(PageTableForm pageTableForm) { userList = userInfoMapper.queryUserInfo(pageTableForm); pageTableForm.setUserList(userList); return pageTableForm; } public UserInfoMapper getUserInfoMapper() { return userInfoMapper; } public void setUserInfoMapper(UserInfoMapper userInfoMapper) { this.userInfoMapper = userInfoMapper; } @Override public int getCount() { return userInfoMapper.getCount(); } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } }
package com.mi.dao; import java.util.List; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import com.mi.entity.User; import com.mi.form.PageTableForm; @Repository("userInfoMapper") public interface UserInfoMapper { public List<User> queryUserInfo(@Param("pageTableForm") PageTableForm pageTableForm); public int getCount(); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mi.dao.UserInfoMapper"> <select id="queryUserInfo" parameterType="com.mi.form.PageTableForm" resultType="com.mi.entity.User"> SELECT id,user_name userName,age FROM user_t where 1=1 <if test="pageTableForm.name !=null and pageTableForm.name !=''"> and user_name like concat('%',#{pageTableForm.name},'%') </if> <if test="pageTableForm.ageFrom !=null and pageTableForm.ageFrom != ''"> and age >= #{pageTableForm.ageFrom} </if> <if test="pageTableForm.ageTo !=null and pageTableForm.ageTo != ''"> and age <= #{pageTableForm.ageTo} </if> </select> <select id="getCount" resultType="int"> SELECT count(*) FROM user_t </select> <!-- <insert id="addUser" parameterType="com.mi.entity.User" flushCache="true"> INSERT INTO user_t (id,user_name,password,age) VALUES (#{id},#{userName},#{password},#{age}) </insert> <delete id="deleteUser" parameterType="com.mi.entity.User" flushCache="true"> DELETE FROM user_t where id=#{id} </delete> <update id="updateUser" parameterType="com.mi.entity.User" flushCache="true"> UPDATE user_t SET user_name = 'zzxy' WHERE id=#{id} </update> --> </mapper>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> .page{ width:200px; } .page span{ margin-left:30px; } a{ text-decoration:none; } </style> <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $(function() { var $table = $(".user_table"); var currentPage = 1; var pageSize = 3; var sumRows = $table.find("tbody tr").length; var sumPages = Math.ceil(sumRows/pageSize); init(); paging(currentPage) $("#prev").click(function(){ currentPage--; init(); paging(currentPage); }) $("#next").click(function(){ currentPage++; init(); paging(currentPage); }) var $page = $("<div class='page'></div>"); for(var pageIndex=1;pageIndex<=sumPages;pageIndex++){ $("<a href='#'><span>["+(pageIndex)+"]</span></a>").bind("click",{"newPage":pageIndex},function(event){ currentPage=event.data["newPage"]; init(); paging(currentPage); }).appendTo($page); } $page.insertAfter($table); function paging(currentPage){ $table.find("tbody tr:not(.prevnext)").hide().slice((currentPage-1)*pageSize,(currentPage)*pageSize).show(); $("#currentPage").val(currentPage+1); $("#currentPage").text(currentPage); $("#sumPages").text(sumPages); } function init(){ if(currentPage==1){ $("#prev").attr({"disabled":"disabled"}); }else{ $("#prev").removeAttr("disabled"); } if(currentPage==sumPages){ $("#next").attr({"disabled":"disabled"}); }else{ $("#next").removeAttr("disabled"); } } $("#search").click(function(){ var name = $("#name").val(); var ageFrom = $("#ageFrom").val(); var ageTo = $("#ageTo").val(); if(name==""&&ageFrom==""&&ageTo==""){ $("#msg").text("未輸入檢索條件!"); return; } $("#form0").submit(); }); }) </script> </head> <body> <form action="${pageContext.request.contextPath}/user/query.do" id="form0" method="POST"> <table> <tr><td>name:</td><td><input name="name" id="name" type="text"></td></tr> <tr><td>ageFrom:</td><td><input name="ageFrom" id="ageFrom" type="text" style="width: 40px"></td></tr> <tr><td>ageTo:</td><td><input name="ageTo" id="ageTo" type="text" style="width: 40px">      <input type="button" value="search" id="search"></td></tr> </table> <span id="msg" style="color:red;"></span> <table class="user_table" border="1"> <thead> <tr> <td width="60px">id</td> <td width="120px">name</td> <td width="60px">age</td> </tr> </thead> <tbody> <c:forEach var="user" items="${pageTableForm.userList}" varStatus="status"> <tr> <td>${user.id}</td> <td>${user.userName}</td> <td>${user.age}</td> </tr> </c:forEach> <tr class="prevnext"> <td> <input id="prev" type="button" value="上一頁"> </td> <td>當前<label id="currentPage"></label>頁/共<label id="sumPages"></label>頁</td> <td> <input id="next" type="button" value="下一頁"> </td> </tr> </tbody> </table> <input id="currentPage" type="hidden" name="currentPage" value="${pageTableForm.currentPage}"> </form> </body> </html>
package com.mi.form; import java.util.List; import com.mi.entity.User; public class PageTableForm { private int currentPage;// 當前頁 private int pageSize = 3;// 每頁記錄數 private int beginIndex;// 開始位置 private int endIndex;// 結束位置 private int pageCount;// 共多少頁 private int userCount;// 共多少條記錄 private String name; private String ageFrom; private String ageTo; private List<User> userList; ...省略get set }
效果如下:
還原再來
其實應該再加個清空條件后重新檢索全部的功能,不過想想算了,沒必要,就一個顯示全部,復制一個search去掉js的驗證就可以了,實際用起來還要再細致化去使用,先這樣
又看了這個http://liuzidong.iteye.com/blog/1055491神的代碼,嗯感覺可以噠,時間有限,等到實際項目再采用練手吧