`

基于BaseDao的动态sql生成方式

    博客分类:
  • JDBC
阅读更多

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;
    }
}

分享到:
评论

相关推荐

    基于SpringJDBC的BaseDAO

    为了支持简单的ORM功能,BaseDAO类内部需要实现几个关键的辅助方法,用于动态构建SQL语句和获取对象属性值。 - **getInsertsql()**:用于构建插入记录的SQL语句。 - **getUpdatesql()**:用于构建更新记录的SQL语句...

    基于注解反射封装的BaseDao(支持一对多查询)

    总结来说,基于注解反射封装的 `BaseDao` 实现了一种灵活的方法,可以处理实体类之间的一对多查询,减少了重复代码,提高了代码的复用性和可维护性。在实际项目中,我们可以通过继承 `BaseDao` 并指定具体的实体类型...

    JAVA代码生成器源码-基于SSM架构

    【JAVA代码生成器源码-基于SSM架构】是一个实用工具,它可以帮助开发者快速构建Java Web应用程序的基础结构。SSM架构是由Spring、Spring MVC和MyBatis三个框架组成的,是目前广泛使用的Java后端开发技术栈。这个工具...

    mybatis basedao

    MyBatis会根据这些配置动态生成SQL执行逻辑。例如,`&lt;select id="selectById" parameterType="int" resultType="com.example.YourEntity"&gt;SELECT * FROM your_table WHERE id = #{id}&lt;/select&gt;`,这里的`#{id}`是一...

    SpringBoot_BaseDao.zip

    例如,根据传入的实体类型,动态生成SQL语句。 在实际开发中,BaseDao通常会包含一些基本的CRUD(Create, Read, Update, Delete)操作,如insert()、selectById()、update()和delete()。这些方法可以通过模板方法...

    ssh+baseDao实现分页

    通常会显示页码、每页条数选择等,同时根据当前页码动态生成前后翻页的链接。 5. **优化与扩展**:为了提供更好的用户体验,还可以考虑加入总记录数的计算,以及根据数据量动态调整每页显示的条数。此外,可以使用...

    java mysql baseDao

    总的来说,Java MySQL BaseDAO模式是Java开发中常用的一种设计模式,通过封装数据库连接和基本的SQL操作,降低了代码的复杂性,提高了开发效率。在使用时,需要结合实际的数据库结构和业务需求进行扩展和定制。

    基于Java动态代理和反射机制实现ORM

    在提供的`SimpleDAOPattern`文件中,可能包含了实现上述功能的简单示例代码,包括DAO接口、实体类、动态代理的InvocationHandler实现,以及数据库连接和SQL生成的相关类。通过阅读和理解这些代码,开发者可以更直观...

    图书管理系统增删查改jspservlet基础项目BaseDao样本.docx

    JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,用于生成动态Web页面。Servlet是Java中的一个接口,用于处理HTTP请求和响应。在图书管理系统中,JSP和Servlet技术被用于开发Web应用程序。 数据库操作 ...

    basedao分页例子补充

    基于这些参数,我们可以编写SQL语句,比如使用LIMIT和OFFSET关键字(在MySQL中)或者ROW_NUMBER()函数(在SQL Server中)来获取特定范围的数据。在"basedao"中,这些分页逻辑可能被封装为一个方法,接收pageSize和...

    mybatis以根据数据库的表自动生成模型,映射接口

    MyBatis Generator(MBG)是一款强大的工具,它允许开发者基于数据库中的表自动创建Java模型类、Mapper接口以及对应的XML映射文件。这款插件极大地简化了开发过程,避免了手动编写这些重复性的代码,提高了开发效率...

    基于泛型反射的数据层封装+MSSQLJDBC3.0驱动

    在数据层封装中,反射可能用于根据实体类的属性动态构建SQL语句,执行CRUD操作。例如,通过反射获取实体类的所有字段,然后生成INSERT或UPDATE语句。 MSSQL JDBC 3.0驱动是微软提供的用于Java应用程序连接Microsoft...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    3、实现一套简单的ORM(直接使用spring rowmapper,insert自己实现),可以基于对象进行crud和相对复杂(感觉比hibernate强大一点)的sql操作; 4、基于对象指定查询的字段,大部分时候可以忘掉表结构进行业务...

    springboot-mybatis-分页

    JSP是Java的一种动态网页技术,它允许在服务器端生成HTML、XML或其他格式的文档。开发者可以在JSP页面中嵌入Java代码,或者使用JSP标签库来处理业务逻辑。JSP与Servlet紧密关联,Servlet负责处理请求,JSP则负责显示...

    Python 实现数据库更新脚本的生成方法

    接下来,我们需要创建一个Python脚本来比较两个不同环境的数据库,并根据差异生成相应的SQL更新脚本。该脚本支持以下功能: - 生成旧数据库中不存在的新表的创建脚本。 - 生成添加新列的SQL脚本。 - 生成修改列属性...

    基于注解ssh的通用dao的crud

    对于DAO层,Hibernate提供了一套基于注解的CRUD接口,如`@Transactional`确保操作的事务性,`@Query`可以编写HQL(Hibernate查询语言)或者SQL进行更复杂的查询。 在具体实现通用DAO时,我们通常会有一个抽象的DAO...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    本网站以xp为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据库系统的核心动态网页,实现博客网站前台及博客个人维护管理等功能模块。 1、 系统处理的准确性和及时性:系统处理的...

    Hibernate通用分页.docx

    在执行分页查询时,`setFirstResult`和`setMaxResults`方法会添加到生成的SQL中,对应LIMIT和OFFSET子句。 4. **性能优化** 为了提高效率,可以使用缓存技术,如二级缓存,来存储已经计算过的总数,避免重复执行...

    v6.单据开发案例

    - **加载查询模板及生成SQL**:加载已创建的查询模板,并根据模板内容生成相应的SQL查询语句。 - **使用查询模板**:在实际应用中调用查询模板,获取所需的业务数据。 - **输出模板创建**:创建用于打印或导出单据...

    IBatisNet 框架 项目实例

    3. **动态代理实现**:IBatisNet会自动生成动态代理类,实现数据访问接口中的方法,调用时无需关注具体实现。 **六、实例操作步骤** 1. **数据访问对象(DAO)**:创建DAO类,继承自IBatisNet提供的BaseDao,T代表...

Global site tag (gtag.js) - Google Analytics