JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】
生活随笔
收集整理的這篇文章主要介紹了
JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- Java后端 學習路線 筆記匯總表【黑馬程序員】
目錄
第5節 復雜條件查詢功能
復雜條件查詢功能_分析
復雜條件查詢功能_代碼實現1
復雜條件查詢功能_代碼實現2
UserDaoImpl.java
UserServiceImpl.java
FindUserByPageServlet.java
第5節 復雜條件查詢功能
復雜條件查詢功能_分析
復雜條件分頁查詢復雜條件查詢功能_代碼實現1
復雜條件查詢功能_代碼實現2
UserDaoImpl.java
package cn.itcast.dao.impl;import cn.itcast.dao.UserDao; import cn.itcast.domain.User; import cn.itcast.util.JDBCUtils; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate;import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set;public class UserDaoImpl implements UserDao {private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());@Overridepublic List<User> findAll() {//使用JDBC操作數據庫...//1.定義sqlString sql = "select * from user";List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));return users;}@Overridepublic User findUserByUsernameAndPassword(String username, String password) {try {String sql = "select * from user where username = ? and password = ?";User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);return user;} catch (Exception e) {e.printStackTrace();return null;}}@Overridepublic void add(User user) {//1.定義sqlString sql = "insert into user values(null,?,?,?,?,?,?,null,null)";//2.執行sqltemplate.update(sql, user.getName(), user.getGender(), user.getAge(), user.getAddress(), user.getQq(), user.getEmail());}@Overridepublic void delete(int id) {//1.定義sqlString sql = "delete from user where id = ?";//2.執行sqltemplate.update(sql, id);}@Overridepublic User findById(int id) {String sql = "select * from user where id = ?";return template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);}@Overridepublic void update(User user) {String sql = "update user set name = ?,gender = ? ,age = ? , address = ? , qq = ?, email = ? where id = ?";template.update(sql, user.getName(), user.getGender(), user.getAge(), user.getAddress(), user.getQq(), user.getEmail(), user.getId());}@Overridepublic int findTotalCount(Map<String, String[]> condition) {//1.定義模板初始化sqlString sql = "select count(*) from user where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍歷mapSet<String> keySet = condition.keySet();//定義參數的集合List<Object> params = new ArrayList<Object>();for (String key : keySet) {//排除分頁條件參數if ("currentPage".equals(key) || "rows".equals(key)) {continue;}//獲取valueString value = condition.get(key)[0];//判斷value是否有值if (value != null && !"".equals(value)) {//有值sb.append(" and " + key + " like ? ");params.add("%" + value + "%");//?條件的值}}System.out.println(sb.toString());System.out.println(params);return template.queryForObject(sb.toString(), Integer.class, params.toArray());}@Overridepublic List<User> findByPage(int start, int rows, Map<String, String[]> condition) {String sql = "select * from user where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍歷mapSet<String> keySet = condition.keySet();//定義參數的集合List<Object> params = new ArrayList<Object>();for (String key : keySet) {//排除分頁條件參數if ("currentPage".equals(key) || "rows".equals(key)) {continue;}//獲取valueString value = condition.get(key)[0];//判斷value是否有值if (value != null && !"".equals(value)) {//有值sb.append(" and " + key + " like ? ");params.add("%" + value + "%");//?條件的值}}//添加分頁查詢sb.append(" limit ?,? ");//添加分頁查詢參數值params.add(start);params.add(rows);sql = sb.toString();System.out.println(sql);System.out.println(params);return template.query(sql, new BeanPropertyRowMapper<User>(User.class), params.toArray());} }UserServiceImpl.java
package cn.itcast.service.impl;import cn.itcast.dao.UserDao; import cn.itcast.dao.impl.UserDaoImpl; import cn.itcast.domain.PageBean; import cn.itcast.domain.User; import cn.itcast.service.UserService;import java.util.List; import java.util.Map;public class UserServiceImpl implements UserService {private UserDao dao = new UserDaoImpl();@Overridepublic List<User> findAll() {//調用Dao完成查詢return dao.findAll();}@Overridepublic User login(User user) {return dao.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());}@Overridepublic void addUser(User user) {dao.add(user);}@Overridepublic void deleteUser(String id) {dao.delete(Integer.parseInt(id));}@Overridepublic User findUserById(String id) {return dao.findById(Integer.parseInt(id));}@Overridepublic void updateUser(User user) {dao.update(user);}@Overridepublic void delSelectedUser(String[] ids) {if (ids != null && ids.length > 0) {//1.遍歷數組for (String id : ids) {//2.調用dao刪除dao.delete(Integer.parseInt(id));}}}@Overridepublic PageBean<User> findUserByPage(String _currentPage, String _rows, Map<String, String[]> condition) {int currentPage = Integer.parseInt(_currentPage);int rows = Integer.parseInt(_rows);if (currentPage <= 0) {currentPage = 1;}//1.創建空的PageBean對象PageBean<User> pb = new PageBean<User>();//2.設置參數pb.setCurrentPage(currentPage);pb.setRows(rows);//3.調用dao查詢總記錄數int totalCount = dao.findTotalCount(condition);pb.setTotalCount(totalCount);//4.調用dao查詢List集合//計算開始的記錄索引int start = (currentPage - 1) * rows;List<User> list = dao.findByPage(start, rows, condition);pb.setList(list);//5.計算總頁碼int totalPage = (totalCount % rows) == 0 ? totalCount / rows : (totalCount / rows) + 1;pb.setTotalPage(totalPage);return pb;} }FindUserByPageServlet.java
package cn.itcast.web.servlet;import cn.itcast.domain.PageBean; import cn.itcast.domain.User; import cn.itcast.service.UserService; import cn.itcast.service.impl.UserServiceImpl;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map;@WebServlet("/findUserByPageServlet") public class FindUserByPageServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//1.獲取參數String currentPage = request.getParameter("currentPage");//當前頁碼String rows = request.getParameter("rows");//每頁顯示條數if (currentPage == null || "".equals(currentPage)) {currentPage = "1";}if (rows == null || "".equals(rows)) {rows = "5";}//獲取條件查詢參數Map<String, String[]> condition = request.getParameterMap();//2.調用service查詢UserService service = new UserServiceImpl();PageBean<User> pb = service.findUserByPage(currentPage, rows, condition);System.out.println(pb);//3.將PageBean存入requestrequest.setAttribute("pb", pb);request.setAttribute("condition", condition);//將查詢條件存入request//4.轉發到list.jsprequest.getRequestDispatcher("/list.jsp").forward(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }加油~
總結
以上是生活随笔為你收集整理的JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb-综合案例(用户信息)-学
- 下一篇: Filter和Listener-学习笔记