MyBatis动态SQL之动态返回列(Dynamic Column)

本文介绍了如何在MyBatis中实现动态SQL,特别是在`select`子句中根据用户选择的年份动态返回对应的列。通过一个报表需求案例,展示了在`TreeDAO.xml`中使用`<foreach>`标签构建动态查询,并给出测试类的实现,最终展示测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,业务描述

最近单位有这样一个报表,根据选择的年份返回年份的列,比如,选择 城市,2015,2016年,那么返回列就是三列,城市,2015年数据,2016年数据,如果是只返回城市 , 2016年数据,那么返回列只有两列 ,城市,2016年数据


二,实现技术MyBatis

我们只是在Mybatis中,where子句中可以采用foreach进行动态集合的输入查询,但是在select子句中,网上的例子几乎没有,与是咱们不防来试试如何实现“一”中描述的需求


三,准备环境

1,mybatis环境,网上资料很多自行搜索

2,可以采用mysql,oracle等关系型数据库

建表语句:插入数据

dtop table 'tree' ;
create table tree(
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(20) ,
age int(2),
year int(4),
notes varchar(20),
PRIMARY KEY (id)
)ENGINE=MyISAM  DEFAULT CHARSET=utf8; 
insert into tree(name, age , year , notes) values 
('nanjing' , 10 , 2006 , 'BTP'),
('beijing' , 11 , 2005 , 'BTP'),
('nanjing' , 11 , 2006 , 'CTP') ;
insert into tree(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值