自学:开始写一个交易记录界面--上:请求的交易记录接口(仅供自己使用)

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 &lt;= 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);
}
适合人群: 1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友;2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友;3、有Django基础,但是想学习企业级项目实战的朋友;4、喜欢 Django 框架并想深入研究的朋友;5、有一定的数据库基础课程目标: 本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点全网最详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。对于从事一份Python Web开发相关的工作简直轻而易举。课程内容: 一、融汇贯通 将Python语言和Django基础知识,以实际应用为媒介,有机组织、融汇贯通。让你的理论与实践结合起来,由知道变成会用。使用了大量的Django高级特性和Bootstrap前端框架,展示了真实的项目部署过程。二、贴近实战 本系列课程为项目实战:超市前端收银系统的开发,项目包含了如下几个模块:系统登录页面、收银模块、管理人员的主界面、收银明细查询。从零开始展示了开发过程。包含了开发前的需求分析、数据库的设计、前端页面的准备、登录模块的实现、收银模块的实现、主界面的动态加载、收银明细的查询。课程具有极强的实战性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值