版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
</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)的定义
-
/**
-
* 企业Company表对应的Model
-
* @Description
-
* @Author xxx
-
* @Date xxxx年xx月xx日 上午10:50:00
-
*/
-
public
@Data
class CompanyModel extends Company {
-
-
private
static
final
long serialVersionUID =
1L;
-
/**
-
* 省
-
*/
-
private String provinceName;
-
/**
-
* 市
-
*/
-
private String cityName;
-
/**
-
* 区
-
*/
-
private String areaName;
-
/**
-
* 街道
-
*/
-
private String streetName;
-
}
2. dao层接口的定义:
-
/**
-
* 通用的企业列表查询
-
* @param queryParam : 查询参数对象
-
* @return
-
*/
-
List<Company> selectCompanyList(CompanyQueryParam queryParam);
3. mybatis 自定义sql
注:此处用 resultType, CompanyModel对象继承了Company,mybatis返回查询结果时用的是代理对象, List<Company>可以指向List<CompanyModel>对象(父类引用指向子类对象类似于List a = new ArrayList())
-
<!-- 注:此处用 resultType, CompanyModel对象继承了Company,mybatis返回查询结果时用的是代理对象, List<Company>可以指向List<CompanyModel>对象(父类引用指向子类对象类似于List a = new ArrayList()) -->
-
<select id="selectCompanyList" resultType="com.doubi.model.company.CompanyModel">
-
select a.* , b.province_name, b.city_name, b.area_name, b.street_name
-
from company a
-
left join sys_area b on b.id = a.zone_code
-
where true
-
<!-- 区域, 包含areaId的下级区域 -->
-
<if test="level!=null">
-
<if test="level==2">
-
AND LEFT(a.area_id, 4)=LEFT(#{areaId}, 4)
-
</if>
-
<if test="level==3">
-
AND LEFT(a.area_id, 6)=LEFT(#{areaId}, 6)
-
</if>
-
<if test="level==4">
-
AND LEFT(a.area_id, 10)=LEFT(#{areaId}, 10)
-
</if>
-
</if>
-
<!-- 其它条件 -->
-
<if test="name!= null">
-
and a.name= #{name}
-
</if>
-
</select>