mybatis动态查询

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_34091758/article/details/103178314
            </div>
                                                <!--一个博主专栏付费入口-->
         
         <!--一个博主专栏付费入口结束-->
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css">
                                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css">
            <div class="htmledit_views" id="content_views">
                                        <p>当我们需要查询CompanyList(对应Company表), 但是数据又不仅仅只来自company表时,例如:我们还需要area表的省市区名称时,可以这样写代码会更优雅点(ps: 个人觉得)</p>

1. CompanyModel(企业entity Company对应的Model)的定义


 
 
  1. /**
  2. * 企业Company表对应的Model
  3. * @Description
  4. * @Author xxx
  5. * @Date xxxx年xx月xx日 上午10:50:00
  6. */
  7. public @Data class CompanyModel extends Company {
  8. private static final long serialVersionUID = 1L;
  9. /**
  10. * 省
  11. */
  12. private String provinceName;
  13. /**
  14. * 市
  15. */
  16. private String cityName;
  17. /**
  18. * 区
  19. */
  20. private String areaName;
  21. /**
  22. * 街道
  23. */
  24. private String streetName;
  25. }

2. dao层接口的定义:


 
 
  1. /**
  2. * 通用的企业列表查询
  3. * @param queryParam : 查询参数对象
  4. * @return
  5. */
  6. List<Company> selectCompanyList(CompanyQueryParam queryParam);

3. mybatis 自定义sql

注:此处用 resultType, CompanyModel对象继承了Company,mybatis返回查询结果时用的是代理对象, List<Company>可以指向List<CompanyModel>对象(父类引用指向子类对象类似于List a = new ArrayList())


 
 
  1. <!-- 注:此处用 resultType, CompanyModel对象继承了Company,mybatis返回查询结果时用的是代理对象, List<Company>可以指向List<CompanyModel>对象(父类引用指向子类对象类似于List a = new ArrayList()) -->
  2. <select id="selectCompanyList" resultType="com.doubi.model.company.CompanyModel">
  3. select a.* , b.province_name, b.city_name, b.area_name, b.street_name
  4. from company a
  5. left join sys_area b on b.id = a.zone_code
  6. where true
  7. <!-- 区域, 包含areaId的下级区域 -->
  8. <if test="level!=null">
  9. <if test="level==2">
  10. AND LEFT(a.area_id, 4)=LEFT(#{areaId}, 4)
  11. </if>
  12. <if test="level==3">
  13. AND LEFT(a.area_id, 6)=LEFT(#{areaId}, 6)
  14. </if>
  15. <if test="level==4">
  16. AND LEFT(a.area_id, 10)=LEFT(#{areaId}, 10)
  17. </if>
  18. </if>
  19. <!-- 其它条件 -->
  20. <if test="name!= null">
  21. and a.name= #{name}
  22. </if>
  23. </select>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值