mybatis中parsing包的用法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"mybatis中parsing包的用法",在日常操作中,相信很多人在mybatis中parsing包的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2026年11月01日mybatis中parsing包的用法
这篇文章主要介绍"mybatis中parsing包的用法",在日常操作中,相信很多人在mybatis中parsing包的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"mybatis中parsing包的用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
private final String openToken; private final String closeToken; private final TokenHandler handler; public GenericTokenParser(String openToken, String closeToken, TokenHandler tokenHandler) { this.openToken = openToken; this.closeToken = closeToken; this.handler = tokenHandler; } public String parse(String text) { StringBuilder builder = new StringBuilder(); //如果传入的字符串有值 if (text != null && text.length() > 0) { //将字符串转为字符数组 char[] src = text.toCharArray(); int offset = 0; //判断openToken在text中的位置,注意indexOf函数的返回值-1表示不存在,0表示在在开头的位置 int start = text.indexOf(openToken, offset); // #{favouriteSection,jdbcType=VARCHAR} // 这里是循环解析参数,参考GenericTokenParserTest,比如可以解析${first_name} ${initial} ${last_name} reporting.这样的字符串,里面有3个 ${} // 验证start是否大于-1(亦即给定参数text中存在openToken子串),如果大于-1(开启循环),验证在给定text的start位置的前一位字符是否为"\"(反斜扛),如果是反斜杠,说明获取到的参数被屏蔽了,我们需要去除这个反斜杠,并重新定位offset。当然如果不是反斜扛,说明参数正常 while (start > -1) { // 判断一下 ${ 前面是否是反斜杠,这个逻辑在老版的mybatis中(如3.1.0)是没有的 if (start > 0 && src[start - 1] == '\\') { // the variable is escaped. remove the backslash. // 新版已经没有调用substring了,改为调用如下的offset方式,提高了效率 //如果text中在openToken前存在转义符就将转义符去掉。如果openToken前存在转义符,start的值必然大于0,最小也为1 //因为此时openToken是不需要进行处理的,所以也不需要处理endToken。接着查找下一个openToken builder.append(src, offset, start - offset - 1).append(openToken); offset = start + openToken.length(); //重设offset } else { // 获取第一个匹配子串的末位位置end,如果end为-1,表示不存在closeToken,则获取末位end之前的所有串,并重新定位offset为src数组长度,如果end值不是-1,说明text字符串中存在结束标记closeToken int end = text.indexOf(closeToken, start); //如果不存在openToken,则直接将offset位置后的字符添加到builder中 if (end == -1) { builder.append(src, offset, src.length - offset); offset = src.length; //重设offset } else { // 获取开始标记之前的子串,并重新定位偏移量offset(start+开始标记的长度=具体参数开始位置),获取这个参数串为content,然后调用TokenHandler的handleToken()方法对获取到的参数串进行处理(比如替换参数之类),然后将处理后的串添加到之前的子串之上,再次重新定位偏移量offset为结束标记的下一位(end+closeToken的长度=end+1) builder.append(src, offset, start - offset); offset = start + openToken.length(); //重设offset String content = new String(src, offset, end - offset); // 得到一对大括号里的字符串后,调用handler.handleToken,比如替换变量这种功能 builder.append(handler.handleToken(content)); offset = end + closeToken.length(); //重设offset } } // 获取text中下一步openToken的开始位置,重置start,执行循环体第三步到第六步,处理每一个参数,直到最后一个参数,循环结束 start = text.indexOf(openToken, offset); } // 验证偏移量offset与src数组的长度,如果offset小,说明原串还有部分未添加到新串之上,将末尾剩余部分添加到新串,然后将新串返回,如果offset不小于src的数组长度,则直接返回新串 if (offset < src.length) { builder.append(src, offset, src.length - offset); } } return builder.toString(); }到此,关于"mybatis中parsing包的用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
参数
字符
位置
字符串
长度
处理
数组
标记
学习
定位
循环
斜杠
转义
偏移
验证
方法
更多
末位
部分
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
互联网是第几次科技革命的成果
互联网佳科技有限公司
科技股互联网
互联网属科技
科技服务与互联网
美国互联网科技
西安互联网科技公司
互联网科技上市公司
郑州华宇互联网科技
互联网科技公司需要的职位
顶级互联网科技成果有哪些
互联网对科技的发展
注册互联网科技公司经营范围大全
互联网媒体平台算高科技产业
健康食品互联网创新科技园项目
996高科技互联网公司
允成互联网科技有限公司融资
珠海东科互联网科技有限公司
优雇互联网科技有限公司
互联网科技股
成都互联网科技公司
亿人帮互联网科技
丰台科技园 互联网公司
互联网为啥属于高科技
未来五年的互联网科技
深圳市优智互联网科技有限公司
北京市互联网新科技
图游互联网科技
互联网科技和医药行业