java 关于查询列表中含有子集的处理;

以前总是抱着sql能一句话解决的问题,就尽量使用SQL;这种强迫性的懒惰心理,务必要克制;

原因: 一条sql语句面对负责的业务,即使能实现也不利于维护,太长,可读性差;

一个大sql不足:1,后期难以维护;2,取总记录数查一次 取所需页数据也要查一次而且这个查询是先取数据再排序比较重耗资源

作为java开发,应该遵从复杂问题分而治之,分成一个个小问题,然后通过代码去实现;

下面,我举一个例子;

    比如: 查询学生列表, 学生报有多个补习班 , 一次性列出 所有学生,及每个学生报名的补习班 (其中,男女有别,男的补习班排除艺术班,女的排除音乐班)!

sql语句实现方式:

    163941_cMZS_1995134.png

这种方法业务集中在sql中,和不利于后期的维护与修改,所以不推荐

java实现方式:

好的方式我也不太懂,只能先记录下我目前实现方式;

1.初级查询基础列表的 resultList

// 多个渠道 > 每个渠道内隐藏多个投放城市
		RowMapper<ChannelPageModel> rowMapper = 
new BeanPropertyRowMapper<ChannelPageModel>(ChannelPageModel.class);
		List<ChannelPageModel> resultList=null;
		if(args!=null && args.size()>0){

			resultList = jdbcTemplate.query(sqlStr.toString(),args.toArray(), rowMapper);
		}else{
			resultList = jdbcTemplate.query(sql,rowMapper);
		}

2. 遍历单个对象,赋值查询1对多关系集合, 塞入到PriceTypes集合中即可

164226_0rAy_1995134.png

好了; 记录结束;

 

转载于:https://my.oschina.net/java1314/blog/840230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值