• 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<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【复杂条件查询功能】相关推荐

  1. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  2. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  3. JavaWeb-综合案例(用户信息)-学习笔记01【列表查询】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  4. JavaWeb-综合案例(用户信息)-学习笔记02【登录功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  5. JavaWeb黑马旅游网-学习笔记06【旅游线路分页展示分页展示】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  6. JavaScript学习笔记06【高级——JavaScript中的事件】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  7. MySQL学习笔记06【多表查询、子查询、多表查询练习】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  8. ESP32 单片机学习笔记 - 06 - (以太网)Ethernet转Wifi

    ESP32 单片机学习笔记 - 06 - (以太网)Ethernet转Wifi 暂停了半个多月的学习,去调车了.现在课设开始了,赶紧回来把一开始的"以太网"目标学完.但是却发现,好 ...

  9. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...

    机器学习实战(Machine Learning in Action)学习笔记----06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习 作者:米仓山下 时 ...

最新文章

  1. 谁是AI行业最受关注的人?未来图灵发布《AI明星企业家热搜榜》
  2. Nature:深大李猛组揭示阿斯加德古菌新门(悟空古菌)及其与真核生物的关系
  3. log_pipe日志收集分析系统介绍
  4. 使用ASP.NET Atlas开发随输入内容自动调整行数的textarea(转)
  5. FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)
  6. asp.net core 使用Mysql和Dapper
  7. Sentinel(十三)之动态规则扩展
  8. Java Micro-Benchmarking:如何编写正确的基准
  9. 总结get和post区别
  10. sklearn的train_test_split
  11. 人脸识别时一定要穿衣服!小心被看光光......
  12. python安装详细步骤mac_mac如何安装python3
  13. vs设置编码格式_轻松编辑PDF文档的贝茨编码
  14. mysql入门很简单习题答案_《MySQL入门很简单》练习6.6
  15. Android入门实践简单小项目:健康饮食
  16. ps4微软服务器地址,PSN服务更新 终于可以在PC上玩PS4游戏了!
  17. 【AutoSAR】【MCAL】MCU模块
  18. android Account
  19. 软件工程师-华为机试注意事项
  20. 华为S5720S重置密码

热门文章

  1. python抓取股票数据_Python股票处理之一_获取国内股票数据
  2. 1151压力变送器型号_罗斯蒙特变送器的标准精度!
  3. viso怎么控制连接线_德国菲斯曼故障出现这些字母代码怎么解决?
  4. js调用c语言程序设计,HTML页面,测试JS对C函数的调用简单实例
  5. 分布式内存数据库---Redis数据库之(键)key
  6. 三十九、SPSS神器界面功能介绍,计算变量和个案计数和加权
  7. 工程制图 (立体投影)
  8. 最新综述:用于文本分类的数据增强方法
  9. KDD Cup 2019 AutoML Track冠军深兰科技DeepBlueAI团队技术分享 | 开源代码
  10. 四张照片合成一张怎么弄_精美!多张照片组合成一张的拼贴画,每一幅都令人惊叹...