HAP框架--自己寫查詢語句
阿新 • • 發佈:2019-01-28
剛接觸HAP框架,水平很菜,這篇文章用來記錄如何在HAP框架中寫自己的查詢語句。
第一步、查詢語句的編寫:
在Hec20500DemoMapper.xml裡編寫SQL語句,可以先在資料庫裡跑跑,看SQL語句有沒有寫對。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="wht.hec20500.mapper.Hec20500DemoMapper"> <resultMap id="BaseResultMap" type="wht.hec20500.dto.Hec20500Demo"> <result column="id" property="id" jdbcType="DECIMAL" /> <result column="name" property="name" jdbcType="VARCHAR" /> </resultMap> <!--在這裡可以寫自己的SQL語句--> <select id="selectAllOrderByName" resultMap="BaseResultMap" parameterType="wht.hec20500.dto.Hec20500Demo"> SELECT a.id,a.name FROM hap_demo_b a order by a.name </select> </mapper>
定義mapper對映檔案
第二步、編寫Hec20500DemoMapper.java-介面檔案
package wht.hec20500.mapper; import com.hand.hap.mybatis.common.Mapper; import wht.hec20500.dto.Hec20500Demo; import java.util.List; public interface Hec20500DemoMapper extends Mapper<Hec20500Demo>{ /** * * @param dto * @return */ List<Hec20500Demo> selectAllOrderByName(Hec20500Demo dto); }
注意:
Mapper介面定義有如下特點:
1、Mapper介面方法名與Mapper.xml中定義的statement的id相同
2、Mapper介面方法的輸入引數型別和mapper.xml中定義的statement的parameterType的型別相同
3、 Mapper介面方法的輸出引數型別和mapper.xml中定義的statement的resultType的型別相同
第三步、在IHec20500DemoService.java定義方法:
程式碼如下:
package wht.hec20500.service; import com.hand.hap.core.IRequest; import com.hand.hap.core.ProxySelf; import com.hand.hap.system.service.IBaseService; import wht.hec20500.dto.Hec20500Demo; import java.util.List; public interface IHec20500DemoService extends IBaseService<Hec20500Demo>, ProxySelf<IHec20500DemoService>{ /** * * @param iRequest * @param hec20500Demo * @param i * @param i1 * @return */ List<Hec20500Demo> selectAllOrderByName(IRequest iRequest, Hec20500Demo hec20500Demo, int i, int i1); }
第四步、在Hec20500DemoServiceImpl.java裡實現service層的方法
程式碼如下:
package wht.hec20500.service.impl;
import com.github.pagehelper.PageHelper;
import com.hand.hap.core.IRequest;
import com.hand.hap.system.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import wht.hec20500.dto.Hec20500Demo;
import wht.hec20500.mapper.Hec20500DemoMapper;
import wht.hec20500.service.IHec20500DemoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class Hec20500DemoServiceImpl extends BaseServiceImpl<Hec20500Demo> implements IHec20500DemoService {
@Autowired
private Hec20500DemoMapper hec20500DemoMapper;
@Override
public List<Hec20500Demo> selectAllOrderByName(IRequest iRequest, Hec20500Demo hec20500Demo, int i, int i1) {
PageHelper.startPage(i,i1);
return hec20500DemoMapper.selectAllOrderByName(hec20500Demo);
}
}
第五步、到這裡就可以在控制層呼叫我們寫的方法了。
程式碼如下:
@RequestMapping(value = "/hap/demo/query/byorder")
@ResponseBody
public ResponseData queryByOrderName(Hec20500Demo dto, @RequestParam(defaultValue = DEFAULT_PAGE) int page,
@RequestParam(defaultValue = DEFAULT_PAGE_SIZE) int pageSize, HttpServletRequest request) {
IRequest requestContext = createRequestContext(request);
return new ResponseData(service.selectAllOrderByName(requestContext,dto,page,pageSize));
}
最後看一下執行效果: