1. 程式人生 > >HAP框架--自己寫查詢語句

HAP框架--自己寫查詢語句

剛接觸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));
    }

最後看一下執行效果: