栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springBoot项目jpa多表联查+动态sql,根据条件查询数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springBoot项目jpa多表联查+动态sql,根据条件查询数据

项目场景:

项目用到了jpa多表联查加上动态查询


问题描述:

由于之前没接触过jpa项目,所以使用的的是原生sql语句开发,这个这个多表联查查询出来的数据是以数组的形式显示出来的,前边并没有属性,前端传不过去。
这个是之前代码。

 @Query(value = "SELECt b.student_class as student_class," +
            "a.activiteName as activiteName," +
            "a.templateId as templateId," +
            "a.student_answer as student_answer," +
            "a.state as state," +
            "a.student_id as student_id ," +
            "b.student_name as student_name," +
            "c.question as question," +
            "a.start_time as start_time," +
            "a.updata_time as updata_time," +
            "a.is_delete as is_delete FROM test1 a left JOIN test2 b on a.student_id = b.studentID left JOIN test3 c on c.id = a.templateId WHERe  a.is_delete = 0 " +
            " and if(:student_class = '' or :student_class is null ,1=1,student_class like %:student_class%)" +
            "and if(:activiteName = '' or :activiteName is null ,1=1,activiteName like %:activiteName%)" +
            "and if(:templateId =    '' or :templateId is null ,1=1,templateId =:templateId)" +
            "and if(:student_answer = '' or :student_answer is null ,1=1,student_answer like %:student_answer%)" +
            "and if(:state = '' or :state is null ,1=1,state like %:state%)" +
            "and if(:student_id = '' or :student_id is null ,1=1,student_id =:student_id)" +
            "and if(:student_name = '' or :student_name is null ,1=1,student_name like %:student_name%)" +
            "and if(:question = '' or :question is null ,1=1,question like %:question%)"
            , nativeQuery = true)
    List testSelectStudentAnswerUnite(String student_class, String activiteName, Integer templateId, String student_answer, String state, String student_id, String student_name, String question);

        }
 
解决方案: 

在select实现层在吧数据一个个附上值
代码如下

 @Override
    public List SelectStudentUnite(UniteModel uniteModel) {
        List studentAnswerUnite = new ArrayList<>();
        //把数据以数组的形式查询出来
        List testStudentAnswerUnite =
                studentAnswerDao.selectStudentAnswerUnite(uniteModel.getStudent_class(),
                        uniteModel.getActiviteName(),
                        uniteModel.getTemplateId(),
                        uniteModel.getStudent_answer(),
                        uniteModel.getState(),
                        uniteModel.getStudent_id(),
                        uniteModel.getStudent_name(),
                        uniteModel.getQuestion());

        Object obj = null;
        //给查询出来的数组数据赋值
        for (Object o : testStudentAnswerUnite){
            Object[] objects = (Object[]) o;
            UniteModel model = new UniteModel();
            model.setStudent_class((String) objects[0]);
            model.setActiviteName((String) objects[1]);
            model.setTemplateId((Integer) objects[2]);
            model.setStudent_answer((String) objects[3]);
            model.setState((String) objects[4]);
            model.setStudent_id((String) objects[5]);
            model.setStudent_name((String) objects[6]);
            model.setQuestion((String) objects[7]);
            model.setStart_time((Date) objects[8]);
            model.setUpdata_time((Date) objects[9]);
            studentAnswerUnite.add(model);
        }
        return studentAnswerUnite;
    }






转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号