1、由于最近刚刚接触Mybatis,想要自己写一个sql,其中是多张表关联的,但是返回的还不想是hashMap格式,就写了很长时间才写好,写好了后发现没有分页查询,就重新写了一个,好了直接上代码。
2、直接定义一个Vo类,内容和实体bean一致
public class OrderVo extends BasePageVo implements Serializable{
3、查询语句的编写,其中OrderVo是一个实体bean
Result result = new Result();
OrderVoexample = new OrderVo();
if(!StringUtils.isEmpty(vo.getAgentId())){
example.setAgentId(vo.getAgentId());
}
List<OrderVo> orderList = orderMapper.selectByOrderList(example);
/* for(Order map:orderList){
}*/
result.setData(orderList);
result.setStatus("success");
return result;
4、在xml中编写就可以了。
<select id="selectByOrderList" parameterType="com.houseguide.vo.OrderVo" resultMap="BaseResultMap">
SELECT b_order.*,scl.clientName,scl.clientPhone,sag.`name` agentName,
sag.phone agentPhone,bui.buildingName FROM b_order
LEFT JOIN s_client scl ON b_order.clientId = scl.clientId
LEFT JOIN s_agent sag ON b_order.agentId = sag.id
LEFT JOIN b_building bui ON bui.buildingId=b_order.buildingId
WHERE b_order.deleteFlag=0
<if test="agentId != null ">
and b_order.agentId=#{agentId,jdbcType=CHAR}
</if>
ORDER BY b_order.createTime DESC
</select>
5、以上内容虽然实现了,但是没有用到example类,感觉实现的有点太简单。可能不符合本身的设计模式