今天基本上功能都完成并通过了测试,包括mysql数据库的连接,myBatis的配置,所有的代码已上传至github:
介绍下最近完成的功能:
1. mySql数据库的安装和配置
按照百度经验,安装配置mySql数据库即可
http://jingyan.baidu.com/article/54b6b9c0eb55182d583b479c.html
安装完成之后,还可以再安装一个navicat可视化的mysql编辑软件:
安装完成之后的,启动navicat软件,按照如图的步骤连接本地数据库:
连接上本地数据库之后,右键点击test选择新建数据库,建立如图所示的数据库,建立表并进行设计,具体步骤不再赘述。
- 工程中配置mysql和myBatis:
myBatis在这里就不再介绍了,可以参考这里:
首先需要引进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&characterEncoding=UTF-8&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中的配置参数意义,参考下面的地址:
接下来就是操作数据库的代码编写以及配置了,主要包含一个*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也配置成功了,接下来就剩下真实场景的配置和测试了,继续整。。。