JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】

  • Java后端 学习路线 笔记汇总表【黑马程序员】
  1. JavaWeb-综合案例(用户信息)-学习笔记01【列表查询】
  2. JavaWeb-综合案例(用户信息)-学习笔记02【登录功能】
  3. JavaWeb-综合案例(用户信息)-学习笔记03【添加删除修改功能】
  4. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】
  5. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】
  6. JavaWeb-综合案例(用户信息)-学习笔记06【复杂条件查询功能】

目录

第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 findAll() {//使用JDBC操作数据库...//1.定义sqlString sql = "select * from user";List users = template.query(sql, new BeanPropertyRowMapper(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.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.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 condition) {//1.定义模板初始化sqlString sql = "select count(*) from user where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍历mapSet keySet = condition.keySet();//定义参数的集合List params = new ArrayList();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 findByPage(int start, int rows, Map condition) {String sql = "select * from user  where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍历mapSet keySet = condition.keySet();//定义参数的集合List params = new ArrayList();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.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 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 findUserByPage(String _currentPage, String _rows, Map condition) {int currentPage = Integer.parseInt(_currentPage);int rows = Integer.parseInt(_rows);if (currentPage <= 0) {currentPage = 1;}//1.创建空的PageBean对象PageBean pb = new PageBean();//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 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 condition = request.getParameterMap();//2.调用service查询UserService service = new UserServiceImpl();PageBean 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);}
}

加油~


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章