基于BaseDao的动态sql生成方式

package com.codelibs.ehr.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

import com.codelibs.ehr.entities.Syqyg;

public class SyqygcxDao extends BaseDao_DG {
    boolean bl;

    // 生成sql语句 sb
    StringBuilder sb = new StringBuilder(
            "select employee.em_name,probation.pr_id,"
                    + "probation.em_id,probation.prob_start,"
                    + "probation.prob_end,probation.prob_reviews,"
                    + "probation.prob_results,probation.prob_date,"
                    + "probation.prob_notes,dept.dept_name,job.job_name,probation.dept_id,"
                    + "probation.job_id from probation,employee,dept,job "
                    + "where probation.em_id=employee.em_id and probation.dept_id=dept.dept_id "
                    + "and probation.job_id=job.job_id");
    // 生成为?赋值的字符串数组
    StringBuilder arr = new StringBuilder("");
    String args[];
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    public ArrayList<Syqyg> find(Syqyg s) {

        // 员工编号
        if (s.getEm_id() != 0) {
            sb.append(" and probation.em_id=?");
            arr.append(s.getEm_id() + " ");
            System.out.println("DAO ------编号:"+s.getEm_id());
        }

        // 员工姓名
        if (s.getEm_name() !=""&&s.getEm_name()!=null) {
            sb.append(" and employee.em_name=?");
            arr.append(s.getEm_name() + " ");
            System.out.println("DAO -------姓名:"+s.getEm_name());
        }
       
        //部门名称
        if (!s.getDept().equals("全部") ) {
            sb.append(" and dept.dept_name=?");
            arr.append(s.getDept() + " ");
            System.out.println("Dao -------部门:"+s.getDept());
        }
       
        //考核状态
        System.out.println("Dao------考核状态:"+!s.getProb_results().equals("全部"));
        if (!s.getProb_results().equals("全部")) {
           
            sb.append(" and probation.prob_results =?");
           
            if(s.getProb_results().equals("转正")) {
                arr.append("1"+" ");
            }
            if (s.getProb_results().equals("试用期")) {
                arr.append("2"+" ");
            }
            if (s.getProb_results().equals("试用期延期")) {
                arr.append("3"+" ");
            }
            if (s.getProb_results().equals("试用期不通过")) {
                arr.append("4"+" ");
            }
            if (s.getProb_results().equals("待转正")) {
                arr.append("5"+" ");
            }
            System.out.println("Dao ------考核状态:"+s.getProb_results());
        }
       
        //试用期开始时间
       
        if (s.getProb_start()!=null) {
            sb.append(" and probation.prob_start>= to_date(  ?  ,'yyyy-MM-dd')");
            String ds = df.format(s.getProb_start());
            System.out.println(ds);
            arr.append(ds+" ");
        }
        System.out.println("Dao------开始时间:"+s.getProb_start());
       
        //试用期结束时间
        if (s.getProb_end() != null) {
            sb.append(" and probation.prob_end<=to_date(  ?  ,'yyyy-MM-dd')");
            String de = df.format(s.getProb_end());
            arr.append(de + " ");
        }
        System.out.println("Dao ------结束时间"+s.getProb_end());
       
        String sql = sb.toString();
       
        String arg = arr.toString();
   
        args = arg.trim().split(" ");
       
        if(args.length==1&&args[0].equals("")) {
            bl = super.query(sql,null);
        }else {
            bl = super.query(sql,args);
        }
   
        System.out.println(args.length);
        System.out.println(args[0].length());
        for(int i = 0;i<args.length;i++) {
            System.out.println(args[i]);
        }

       
        //boolean bl = super.query(sql, args);

        ArrayList<Syqyg> sg = new ArrayList<Syqyg>();

        if (!bl) {
            System.out.println("没有查出来");
            return null;
        }
        try {
            while (resultSet.next()) {
                sg.add(ORM2Syqyg(resultSet));
            }
        } catch (SQLException e) {
            System.out.println("映射关系出错");
            e.printStackTrace();
        }
        return sg;

    }

    public Syqyg ORM2Syqyg(ResultSet resultSet) throws SQLException {

        Syqyg ss = new Syqyg();
//        System.out.println(resultSet.getInt("em_id"));
//        System.out.println(resultSet.getString("em_name"));
//
//        System.out.println(resultSet.getInt("prob_results"));
//        System.out.println(resultSet.getString("prob_reviews"));
//        System.out.println(resultSet.getString("prob_notes"));
//        System.out.println(resultSet.getString("dept_name"));
//        System.out.println(resultSet.getString("job_name"));
//        System.out.println(resultSet.getDate("prob_start"));
//        System.out.println(resultSet.getDate("prob_end"));
//        System.out.println(resultSet.getDate("prob_date"));

        ss.setEm_id(resultSet.getInt("em_id"));
        ss.setEm_name(resultSet.getString("em_name"));
        ss.setPr_id(resultSet.getInt("pr_id"));
        ss.setProb_reviews(resultSet.getString("prob_reviews"));
        if(resultSet.getInt("prob_results")==1) {
            ss.setProb_results("转正");
        }else if(resultSet.getInt("prob_results")==2) {
            ss.setProb_results("试用期");
        }else if(resultSet.getInt("prob_results")==3) {
            ss.setProb_results("试用期延期");
        }else if(resultSet.getInt("prob_results")==4) {
            ss.setProb_results("试用期不通过");
        }else {
            ss.setProb_results("待转正");
        }
        ss.setProb_notes(resultSet.getString("prob_notes"));
        ss.setDept(resultSet.getString("dept_name"));
        ss.setJob(resultSet.getString("job_name"));
        ss.setProb_start(resultSet.getDate("prob_start"));
        ss.setProb_end(resultSet.getDate("prob_end"));
        ss.setProb_date(resultSet.getDate("prob_date"));

        return ss;
    }
}

你可能感兴趣的:(DAO,sql)