微信支付-商户后台(3)

今天基本上功能都完成并通过了测试,包括mysql数据库的连接,myBatis的配置,所有的代码已上传至github:

https://github.com/shangXiaoM/WXPayHost

介绍下最近完成的功能:
1. mySql数据库的安装和配置
按照百度经验,安装配置mySql数据库即可

http://jingyan.baidu.com/article/54b6b9c0eb55182d583b479c.html

安装完成之后,还可以再安装一个navicat可视化的mysql编辑软件:

http://www.cr173.com/soft/38153.html

安装完成之后的,启动navicat软件,按照如图的步骤连接本地数据库:
这里写图片描述

连接上本地数据库之后,右键点击test选择新建数据库,建立如图所示的数据库,建立表并进行设计,具体步骤不再赘述。
这里写图片描述

  1. 工程中配置mysql和myBatis:
    myBatis在这里就不再介绍了,可以参考这里:

http://www.mybatis.org/mybatis-3/zh/index.html

首先需要引进mysql和myBatis的maven依赖:

<!-- MYSQL -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--MySQL数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- HikariCP 的JDBC连接池组件 -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <!-- 版本号可以不用指定,Spring Boot会选用合适的版本 -->
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

然后需要在application.properties中配置数据库source和mybatis的*Mapper.xml文件和实体的路径:

#datasource
spring.datasource.url=jdbc:mysql://localhost:3306/rencarepay?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false"
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=10
spring.datasource.min-idle=5
spring.datasource.initial-size=5

#mybatis
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=com.rencare.pay.entity

关于application.properties中的配置参数意义,参考下面的地址:

https://segmentfault.com/a/1190000004316491

接下来就是操作数据库的代码编写以及配置了,主要包含一个*Mapper.xml文件,一系列的实体(映射数据库的表结构),一系列的接口(注意是接口)*Mapper.xml,如下:
这里写图片描述

*Mapper.java中包含对数据库的操作接口:

package com.rencare.pay.dao;

import org.apache.ibatis.annotations.Mapper;

import com.rencare.pay.entity.PayInfo;

@Mapper
public interface PayMapper {
    /**
     * 统一下单成功后,插入预支付信息
     * 
     * @param payInfo
     * @return
     */
    int insertPayInfo(PayInfo payInfo);

    /**
     * 通过商户订单号,主动查询支付结果
     * 
     * @param outTradeNo
     *            商户订单号
     * @return
     */
    PayInfo queryByOTN(String outTradeNo);

    /**
     * 根据支付结果通知,更新支付信息
     * 
     * @param payInfo
     *            支付信息
     */
    void updatePayInfo(PayInfo payInfo);

    /**
     * 通过预支付id,获取支付信息
     * 
     * @param prepayId
     *            预支付id
     * @return
     */
    PayInfo queryByPreId(String prepayId);
}

对应这些操作接口的映射,都在*Mapper.xml文件中进行配置:

<?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="com.rencare.pay.dao.PayMapper">

    <!-- 已在application.properties中配置了entity的包路径 -->
    <resultMap id="payInfo" type="PayInfo">
        <result property="id" column="id" />
        <result property="mAppId" column="appid" />
        <result property="mMchId" column="mch_id" />
        <result property="mTradeType" column="trade_type" />
        <result property="mPrepayId" column="prepay_id" />
        <result property="mBody" column="body" />
        <result property="mOutTradeNo" column="out_trade_no" />
        <result property="mTotalFee" column="total_fee" />
        <result property="mBankType" column="bank_type" />
        <result property="mTransactionId" column="transaction_id" />
        <result property="mTimeEnd" column="time_end" />
        <result property="mCashFee" column="cash_fee" />
    </resultMap>

    <select id="queryByOTN" parameterType="string" resultMap="payInfo"
        resultType="PayInfo" timeout="5000">
        SELECT
        *
        FROM PAYINFO
        WHERE out_trade_no =
        #{outTradeNo}
    </select>

    <select id="queryByPreId" parameterType="string" resultMap="payInfo"
        resultType="PayInfo" timeout="5000">
        SELECT
        *
        FROM PAYINFO
        WHERE prepay_id =
        #{prepayId}
    </select>

    <insert id="insertPayInfo" parameterType="PayInfo"
        useGeneratedKeys="true" keyProperty="id" timeout="5000">
        insert into payinfo
        (appid,mch_id,trade_type,prepay_id,body,out_trade_no,total_fee,bank_type,transaction_id,time_end,cash_fee)
        values(#{mAppId}, #{mMchId}, #{mTradeType}, #{mPrepayId}, #{mBody},
        #{mOutTradeNo}, #{mTotalFee}, #{mBankType}, #{mTransactionId},
        #{mTimeEnd}, #{mCashFee})
    </insert>

    <update id="updatePayInfo" parameterType="PayInfo" timeout="5000">
        update payinfo set
        bank_type = #{mBankType},
        transaction_id =
        #{mTransactionId},
        time_end = #{mTimeEnd},
        cash_fee = #{mCashFee}
        where
        id = #{id}
    </update>

</mapper>

注意:配置文件中的id为接口的函数名称,parameterType为参数类型,timeout为操作数据库到数据库返回结果的超时时间,resultMap为返回值映射,对应上面设置的<resultMap id="payInfo" type="PayInfo">,resultType为返回值类型,因为包路径已经在application.properties中进行了配置mybatis.type-aliases-package=com.rencare.pay.entity,所以在这里可以直接填写对象返回值类型的类名。

配置完成后,使用postman和natapp进行测试如下:
调用统一下单的接口
这里写图片描述

统一下单成功后(测试,你有办法让他下单成功的),将下单信息插入到数据库
这里写图片描述

OK,mySql和myBatis也配置成功了,接下来就剩下真实场景的配置和测试了,继续整。。。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值