源码学习之MyBatis的底层查询原理

您所在的位置:网站首页 mybatis源码解读 源码学习之MyBatis的底层查询原理

源码学习之MyBatis的底层查询原理

#源码学习之MyBatis的底层查询原理| 来源: 网络整理| 查看: 265

导读

本文通过MyBatis一个低版本的bug(3.4.5之前的版本)入手,分析MyBatis的一次完整的查询流程,从配置文件的解析到一个查询的完整执行过程详细解读MyBatis的一次查询流程,通过本文可以详细了解MyBatis的一次查询过程。在平时的代码编写中,发现了MyBatis一个低版本的bug(3.4.5之前的版本),由于现在很多工程中的版本都是低于3.4.5的,因此在这里用一个简单的例子复现问题,并且从源码角度分析MyBatis一次查询的流程,让大家了解MyBatis的查询原理。

1 问题现象

1.1 场景问题复现

如下图所示,在示例Mapper中,下面提供了一个方法queryStudents,从student表中查询出符合查询条件的数据,入参可以为student_name或者student_name的集合,示例中参数只传入的是studentName的List集合

List studentNames = new LinkedList(); studentNames.add("lct"); studentNames.add("lct2"); condition.setStudentNames(studentNames); select * from student AND student_name IN #{studentName, jdbcType=VARCHAR} AND student_name = #{studentName, jdbcType=VARCHAR}

期望运行的结果是

select * from student WHERE student_name IN ( 'lct' , 'lct2' )

但是实际上运行的结果是

==> Preparing: select * from student WHERE student_name IN ( ? , ? ) AND student_name = ?

==> Parameters: lct(String), lct2(String), lct2(String)

Original: https://www.cnblogs.com/Jcloud/p/16744140.htmlAuthor: 京东云开发者Title: 源码学习之MyBatis的底层查询原理

相关阅读 Title: 如何训练创建一个聊天自动回复的微信机器人(一) 如何创建一个聊天自动回复的微信机器人(一)

这里,本来打算用一个微信号来做机器人的,但是机器人有几个缺点1、如果任意一个人想使用机器人的话,那么必须添加机器人为好友才能使用测试2、基于微信识别异常微信号的自动检测,机器人很有可能被封号o(╥﹏╥)o3、现在想使用微信号做机器人的话,后端对接微信的方法大概有两种,一是使用网页版微信的API进行接入,不过现在网页版的微信已经封的差不多了,这种方法已经过时了,二是使用微信注入dll的方式来对接,不过这种方式也同样会受到微信的异常号自动检测,也会容易封号

所以这边使用微信公众号的后台开发自动回复来对接

开发配置:1、python2、一台服务器

1、首先注入一个微信公众号

进入微信公众号的开放平台,进入基本配置页面申请好开发者id和密码,并且开启你的服务器配置,配置好你的服务器后台、令牌和消息加密秘钥,后面会介绍如何配置你的服务器后台

注意,你的后端调试成功后才会成功开启服务器配置

源码学习之MyBatis的底层查询原理源码学习之MyBatis的底层查询原理 ; 2、服务器后台配置

我这边使用的阿里云的centos服务器,后端使用python,使用的是flask框架

服务器后台开启的端口一定要是80或者443,因为服务器配置只支持这两个端口,具体的开发模式也可以参考这个文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Getting_Started_Guide.html

后台配置开发的逻辑如下:

1. 通过请求验证token 2. 验证通过配置完成 3. 接收用户发送的消息 4. 使用训练好的对话机器人返回消息 5. 微信订阅号自动回复消息

centos服务器安装python的具体指南参考我的其他文章,这里放出我的一部分代码

# -*- coding:utf-8 -*- from flask import Flask from flask import request import hashlib import time import xml.etree.ElementTree as ET app = Flask(__name__) @app.route("/") def index(): return "Hello World!" @app.route("/wechat", methods=["GET","POST"]) def weixin(): if requesthod == "GET": # 判断请求方式是GET请求 my_signature = request.args.get('signature') # 获取携带的signature参数 my_timestamp = request.args.get('timestamp') # 获取携带的timestamp参数 my_nonce = request.args.get('nonce') # 获取携带的nonce参数 my_echostr = request.args.get('echostr') # 获取携带的echostr参数 token = 'xxxxxxxxxxxx' # 一定要跟刚刚填写的token一致 li = [token, my_timestamp, my_nonce] li.sort() sha1 = hashlib.sha1() sha1.update("".join(li).encode('utf-8')) hashcode = sha1.hexdigest() # 加密后的字符串可与signature对比,标识该请求来源于微信 if my_signature == hashcode: return my_echostr else: return '' else: # 解析xml xml = ET.fromstring(request.data) toUser = xml.find('ToUserName').text fromUser = xml.find('FromUserName').text msgType = xml.find("MsgType").text createTime = xml.find("CreateTime") # 判断类型并回复 print(msgType) if msgType == "text": content = xml.find('Content').text print(content) return reply_text(fromUser, toUser, reply(fromUser, content)) elif msgType == 'event': content = '关注' return reply_text(fromUser, toUser, reply(fromUser, content)) else: return reply_text(fromUser, toUser, "我只懂文字") def reply_text(to_user, from_user, content): """ 以文本类型的方式回复请求 """ return """ {} """.format(to_user, from_user, int(time.time() * 1000), content) def reply(msg): ''' 使用对话机器人 ''' res = requests.get('http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + msg) content = res.json()['content'] content = content.replace('{br}', '\n') return content if __name__ == "__main__": app.run(host='0.0.0.0',port=80,debug=True)

这边的对话机器人暂时使用青云客的免费聊天机器人,将在下一篇文章中讲到,后台配置完成后,可以先到微信公众平台的后台调试工具先去调试一下,具体网址在这:

如果想要实现一个简单的聊天回复机器人,可以在青云客上使用免费的聊天机器人,后续我将会用神经网络训练一个能自己成长的聊天机器人

https://mp.weixin.qq.com/debug/

测试通过返回成功的测试结果即为成功

源码学习之MyBatis的底层查询原理源码学习之MyBatis的底层查询原理如果测试失败,多半是后端出问题了,多调试调试后端即可,开启成功后,向微信机器人发送消息即可收到自动回复的消息源码学习之MyBatis的底层查询原理

Original: https://blog.csdn.net/qq_36551453/article/details/113935150Author: 程序员吴彦祖Title: 如何训练创建一个聊天自动回复的微信机器人(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/364420/

转载文章受原作者版权保护。转载请注明原作者出处!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3