%多表连接查询和部分sql函数综合应用以及在mapper中的用法%

案例1:红包信息表和红包类型表关联,查询全信息

创建红包信息表 t0, 红包类型表 t1,
t1 1 —— n t0
t1中的pk作为t0表的外键
向两张表添加信息
t0表展示

t0

t0

t0

t1表展示
t1

java中在entity包下创建实体类

Luckymoney(Integer id pk,String producer,BigDecimal money,String consumer,int typeId)
关联luckymoney表得到的数据源
LuckymoneyType(Integer id,String type)
关联luckymoneytype表得到的数据源
LuckymoneyDetailedInfo(Integer lid,String producer,BigDecimal money,String consumer,Integer tid,String type)
关联t0 t1表链接查询得到的数据源

在数据库中写好sql语句运行无误

sql语句:
SELECT t0.id as lid,producer,money,consumer,t1.id as tid,type
FROM luckymoney t0
inner join luckymoneytype t1 on t0.typeId = t1.id;


结果集
在mapper写sql语句
/**
    * 两表内链接查全信息
    * @return 对象LuckymoneyDetailedInfo集合
    */
   @Select("SELECT t0.id as lid,t0.producer as producer,t0.money as money,t0.consumer as consumer,t1.id as tid,t1.type as type FROM luckymoney t0 inner join luckymoneytype t1 on t0.typeId = t1.id ")
   List selectLuckyMoneyWithType();

Attention:一定要写清楚,哪个表的哪一列的别名 = 实体类属性名
在join中如果定义了表别名,表一定要用别名表示。

写好单元测试,测试通过后再通过服务层调用该方法即可

案例2 :报表制作(续案例)

按照发送红包类型统计,发包人发的红包总金额和总个数

创建红包信息表 t0, 红包类型表 t1,
t1 1 —— n t0
t1中的pk作为t0表的外键
向两张表添加信息

在数据库中写好sql语句运行无误
集合
java中在entity包下创建实体类

Luckymoney(Integer id pk,String producer,BigDecimal money,String consumer,int typeId)
关联luckymoney表得到的数据源
LuckymoneyType(Integer id,String type)
关联luckymoneytype表得到的数据源
LuckymoneyStatement(String producer,BigDecimal totalAmmount,Integer totalCount,String type)
关联t0 t1表连接查询并进行处理后得到的报表信息数据源

在mapper写sql语句
    /**
     * 报表
     * @return 集合
     */
    @Select("select t0.producer,sum(t0.money) as totalAmmount ,count(1) as totalCount,t1.type from luckymoney t0 inner join luckymoneytype t1 on t0.typeId = t1.id group by t1.type,t0.producer")
    List selectLuckyMoneyStatement();
写好单元测试,测试通过后再通过服务层调用该方法即可

扩展

1.在报表的基础上统计出各类红包发送数目大于2个的信息

result

2.在报表的基础上统计出发送各类红包总金额超过700元的相关信息

result

你可能感兴趣的:(%多表连接查询和部分sql函数综合应用以及在mapper中的用法%)