1.新建TranRecordDTO, 添加2个字段:开始时间+结束时间,为后期查询条件:时间段用。
public class TranRecordDTO extends TranRecordDO {
// 查询条件:开始时间
// 因为请求时带的参数是String类型的,而且mapper.xml中查询SQL语句已经 日期格式化,所以用String类型就行
private String startTime;
// 查询条件:结束时间
private String endTime;
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}
2.新建Mapper接口,不用原来生成的 .
public interface TranRecordMapper {
// 根据条件查询交易记录
List<Map<String,Object>> selectListByPage(TranRecordDTO tranRecordDTO);
}
3.写一个TranRecordMapper.xml文件(不用生成那个,因为需要加两个字段:查询条件的开始时间+结束时间),映射新写的TranRecordDTO和TranRecordMapper
<?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和type-->
<mapper namespace="com.test.mapper.TranRecordMapper" >
<resultMap id="BaseResultMap" type="com.test.entity.dto.TranRecordDTO" >
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="customer_id" property="customerId" jdbcType="VARCHAR" />
<result column="product_name" property="productName" jdbcType="VARCHAR" />
<result column="transaction_type" property="transactionType" jdbcType="TINYINT" />
<result column="transaction_amount" property="transactionAmount" jdbcType="INTEGER" />
<result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
<result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
<result column="del_flag" property="delFlag" jdbcType="TINYINT" />
<!--因为传过来的时候,需要传查询条件:开始时间+结束时间。所以这需要加上两个字段-->
<result column="startTime" property="startTime" jdbcType="TIMESTAMP"/>
<result column="endTime" property="endTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!--直接查询(传过来公司ID)或者根据条件查询(查询条件包括:产品名;交易类型;开始时间+结束时间)-->
<!--为什么返回类型是map,为什么参数类型是com.transaction.entity.dto.TranRecordDTO-->
<!--因为传参数的时候要把开始时间+结束时间传进来-->
<!--此处resultType="java.util.Map",用List会报异常-->
<select id="selectListByPage" parameterType="com.test.entity.dto.TranRecordDTO" resultType="java.util.Map">
select * from jp_transaction_records
<where>
<!--product_name对应数据库的字段名字 productName是上面result中property的名字-->
del_flag = 0
<if test="productName!=null and productName!=''">
and product_name=#{productName}
</if>
<!--当参数传过来的是 0 时,myBatis自动把0定义为空字符串“”,开发过程中注意!!-->
<!--所以,不能加transactionType!=''-->
<if test="transactionType!=null">
and transaction_type=#{transactionType,jdbcType=TINYINT}
</if>
<if test="startTime!=null">
and create_date >= DATE_FORMAT(#{startTime},'%Y-%c-%d %H:%i:%s')
</if>
<if test="endTime!=null">
and create_date <= DATE_FORMAT(#{endTime},'%Y-%c-%d %H:%i:%s')
</if>
<!--因为where的查询条件,是从后往前执行,所以把公司ID写在最后,先通过公司ID筛选-->
<if test="customerId!=null and customerId!=''">
and customer_id=#{customerId}
</if>
</where>
</select>
</mapper>
4.新建Controller
@Controller
@RequestMapping(value = "/tranRecord")
public class TranRecordController {
@Autowired
private TranRecordService tranRecordService;
@RequestMapping(value = "/selectListByPage",method = RequestMethod.GET)
@ResponseBody
public ResultDo selectListByPage(String companyId, String productName, String tranType, Date startTime,Date endTime){
ResultDo resultDo =new ResultDo();
// 把查询条件放在tranRecordDTO里
TranRecordDTO tranRecordDTO = new TranRecordDTO();
if(productName!=null&&productName!=""){
tranRecordDTO.setProductName(productName);
}
if(tranType!=null&&tranType!=""){
tranRecordDTO.setTransactionType(Byte.valueOf(tranType));
}
if(startTime!=null){
tranRecordDTO.setStartTime(startTime);
}
if(endTime!=null){
tranRecordDTO.setEndTime(endTime);
}
tranRecordDTO.setCustomerId(companyId);
List<Map<String,Object>> tranResults = tranRecordService.selectListByPage(tranRecordDTO);
if(tranResults.size()!=0){
resultDo.setCode(StatusCode.HTTP_SUCCESS);
resultDo.setData(tranResults);
resultDo.setMsg("请求成功");
return resultDo;
}
resultDo.setCode(StatusCode.HTTP_FAILURE);
resultDo.setMsg("查询异常或没有数据");
return resultDo;
}
}
5.新建Service接口
public interface TranRecordService {
// 根据条件查询交易记录
List<Map<String,Object>> selectListByPage(TranRecordDTO tranRecordDTO);
}
6.新建Service接口实现类
@Service
public class TranRecordServiceImpl implements TranRecordService {
@Autowired
private TranRecordMapper tranRecordMapper;
// 根据条件查询交易记录
public List<Map<String,Object>> selectListByPage(TranRecordDTO tranRecordDTO){
return tranRecordMapper.selectListByPage(tranRecordDTO);
}