刚接触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));
}
最后看一下运行效果: