首页 > 其他分享 >复杂条件查询功能

复杂条件查询功能

时间:2023-02-13 11:11:05浏览次数:42  
标签:功能 String 复杂 dao 查询 user sql import public

复杂条件查询功能-分析

 

 复杂条件查询功能-代码实现-每页数据条件查询

package com.example.day17_case.service.impl;


import com.example.day17_case.dao.UserDao;
import com.example.day17_case.dao.impl.UserDaoImpl;
import com.example.day17_case.domain.PageBean;
import com.example.day17_case.domain.User;
import com.example.day17_case.service.UserService;

import java.util.List;
import java.util.Map;

public class UserServiceImpl implements UserService {
    private UserDao dao = new UserDaoImpl();

    @Override
    public List<User> findAll() {
        //调用Dao完成查询
        return dao.findAll();
    }

    @Override
    public User login(User user) {
        return dao.findUserByUsernameAndPassword(user.getUsername(),user.getPassword());
    }

    @Override
    public void addUser(User user) {
        dao.add(user);
    }

    @Override
    public void deleteUser(String id) {
        dao.delete(Integer.parseInt(id));
    }

    @Override
    public User findUserById(String id) {
        return dao.findById(Integer.parseInt(id));
    }

    @Override
    public void updateUser(User user) {
        dao.update(user);
    }

    @Override
    public void delSelectedUser(String[] ids) {
        if(ids != null && ids.length > 0){
            //1.遍历数组
            for (String id : ids) {
                //2.调用dao删除
                dao.delete(Integer.parseInt(id));
            }
        }

    }

    @Override
    public 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;
    }
}
package com.example.day17_case.dao.impl;

import com.example.day17_case.dao.UserDao;
import com.example.day17_case.domain.User;
import com.example.day17_case.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());

    @Override
    public List<User> findAll() {
        //使用JDBC操作数据库...
        //1.定义sql
        String sql = "select * from user";
        List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));

        return users;
    }

    @Override
    public 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;
        }

    }

    @Override
    public void add(User user) {
        //1.定义sql
        String sql = "insert into user values(null,?,?,?,?,?,?,null,null)";
        //2.执行sql
        template.update(sql, user.getName(), user.getGender(), user.getAge(), user.getAddress(), user.getQq(), user.getEmail());
    }

    @Override
    public void delete(int id) {
        //1.定义sql
        String sql = "delete from user where id = ?";
        //2.执行sql
        template.update(sql, id);
    }

    @Override
    public User findById(int id) {
        String sql = "select * from user where id = ?";
        return template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
    }

    @Override
    public 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());
    }

    @Override
    public int findTotalCount(Map<String, String[]> condition) {
        //1.定义模板初始化sql
        String sql = "select count(*) from user where 1 = 1 ";
        StringBuilder sb = new StringBuilder(sql);
        //2.遍历map
        Set<String> keySet = condition.keySet();
        //定义参数的集合
        List<Object> params = new ArrayList<Object>();
        for (String key : keySet) {

            //排除分页条件参数
            if("currentPage".equals(key) || "rows".equals(key)){
                continue;
            }

            //获取value
            String 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());
    }

    @Override
    public 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.遍历map
        Set<String> keySet = condition.keySet();
        //定义参数的集合
        List<Object> params = new ArrayList<Object>();
        for (String key : keySet) {

            //排除分页条件参数
            if("currentPage".equals(key) || "rows".equals(key)){
                continue;
            }

            //获取value
            String 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());
    }
}

标签:功能,String,复杂,dao,查询,user,sql,import,public
From: https://www.cnblogs.com/wsfj/p/17115649.html

相关文章

  • 一个成熟的WMS(仓库管理系统)应该具备的那些功能
    一个成熟的WMS(仓库管理系统)应该具备的那些功能WMS仓库管理系统是一款以标准化、智能化过程导向管理的仓库管理软件,它结合了众多知名企业的实际情况和管理经验,按照运作的业务......
  • SAP QM不常用功能之Automatic Usage Decision
    SAPQM不常用功能之AutomaticUsageDecision在SAPQM模块里,正常流程里,对于检验批的最后处置(使用决策),都有质量部门的业务人员手工执行事务代码QA11来进行。但是作为一个通用......
  • 推荐一个程序员接单平台,认证就白嫖50块,写个功能就能技术入股
    一直以为自己出身寒门呀,原来寒门是指势力较低的世家。我不是寒门,再怎么也得是个庶民吧!鬼知道这个庶民是指有房有钱的人。古代没有房叫做氓,没有钱叫做流,简称就是流氓。不服......
  • 推荐一个程序员接单平台,认证就白嫖50块,写个功能就能技术入股
    一直以为自己出身寒门呀,原来寒门是指势力较低的世家。我不是寒门,再怎么也得是个庶民吧!鬼知道这个庶民是指有房有钱的人。古代没有房叫做氓,没有钱叫做流,简称就是流氓。不......
  • 分页查询功能
    分页查询功能-分析分析:   分页查询功能-代码实现-分页具体步骤   分页查询功能-代码实现-后台代码实现创建PageBean类packagecom.jstl.domain;import......
  • 注册功能分析以及表单校验
    注册功能分析      表单校验表单校验:1.用户名:单词字符,8到20位长度2.密码:单词字符,8到20位长度3.email:邮件格式4.姓名:非空......
  • sql 函数查询
    1.生成随机数(SELECTfloor(rand()*100000000)) 2.sql查询字段值长度判断是否18位SELECT*FROM表名WHERELENGTH(字段)>=18OR字段为nullISNULLOR字段为......
  • mybatis 表与表 关联查询 (一)
     @MapperpublicinterfaceDeptMapper{/***分步查询员工*及员工所对应的部门*分步查询第二步:*通过部门查询员工所对应的部门......
  • mysql使用sql语句查询数据库所有表注释已经表字段注释
    场景:1.要查询数据库"mammothcode"下所有表名以及表注释/*查询数据库‘mammothcode’所有表注释*/SELECTTABLE_NAME,TABLE_COMMENTFROMinformation_schema.TA......
  • SQL功能介绍
    1.介绍下InnoDB和MyISAM存储引擎的区别,以及具体的应用场景?MySQLClient终端输入showengines可查看支持的存储引擎类型。MyISAM对于不支持事务并且存在大量S......