1.JSè·åspançå
容
2.使用ModelMapper的匹配一次踩坑经历
3.数据库查询中LIKE和NOT LIKE的应用
JSè·åspançå 容
ä¸ç¥é楼主æ¯è¦è·å¾spanéçä»ä¹ä¸è¥¿, ä½ çspanéæ¯ä¸ä¸ª<a>æ ç¾å ç´ å
ä¸ç¥éæ¯ä¸æ¯è¿ä¸ªææ
var span = $('#like_');
alert($(span).find('a').text());
è¾åº: å欢(1)
使用ModelMapper的一次踩坑经历
在项目实践中,我们经常会遇到将两个相似对象进行相互转换的源码需求,这主要是匹配为了在对外提供数据时,能够隐藏部分敏感信息,源码如密码、匹配加密token等。源码音乐共享源码一般情况下,匹配我们会创建一个新的源码对象,然后逐个将需要的匹配值设置进去。但如果需要转换的源码对象组较多,这种做法会带来大量无意义的匹配get/set操作。
在这种情况下,源码ModelMapper应运而生。匹配它是源码一个简单、高效、匹配智能的对象映射工具。使用ModelMapper非常简便,只需添加maven依赖,蜜桃网源码然后创建一个ModelMapper对象,并调用其map方法将一个对象的值映射到另一个对象上。
关于ModelMapper的使用方法,今天不做详细介绍,大家可以自行查找相关文档进行学习。今天要分享的是前几天我无意间遇到的一个问题。我有两个类,PostDO和PostVO(以下只展示部分字段),我在一个方法中尝试将PostDO对象映射到PostVO。
执行结果没有出现异常,但当我项目中likeNum字段的值增加到2时,异常出现了。提示信息显示int类型不能转换成boolean类型,很明显是ModelMapper将like字段映射到了likeNum上。那么ModelMapper是如何进行映射的呢?让我们一起来看看ModelMapper的源码。
ModelMapper通过反射机制获取目标类的字段,并生成期望匹配的大唐2源码键值对,类似于这样。然后,它会遍历这些键值对,逐个寻找源类中可以匹配的字段。首先会根据目标字段判断是否存在对应的映射,如果不存在,则调用matchSource方法在源类中根据匹配规则寻找可以匹配的字段。
在匹配过程中,首先会判断目标字段的类型是否在类型列表中存在,如果存在,则可以根据名称将其加入到匹配的mappings中。如果不存在,则需要判断converterStore中是否存在能够应用于该字段的转换器。
默认的转换器有种。找到对应的converter后,它的map方法会返回一个MatchResult,MatchResult有三种结果:FULL、制作源码内容PARTIAL和NONE(即全部匹配、部分匹配和不匹配)。注意,这里有一个部分匹配,也就是我遇到的问题。在对like进行匹配时,likeNum被定义为部分匹配。因此,当likeNum大于2时,就不能被转换成boolean类型。
解决方法有两种:一种是在设置中规定必须字段名完全匹配;另一种是将匹配策略定义为严格。
ModelMapper会根据权重选择合适的源字段,但如果匹配要求不高,ModelMapper可能会筛选出多个符合条件的字段,因此,还需要进一步过滤。
如果匹配到的mars 源码调试结果只有一个,就返回这个结果;如果有多个,则会调用disambiguateMappings方法,去掉有歧义的结果。我们来看一下这个方法。
ModelMapper定义了一个权重来判断源字段是否有歧义,这里根据驼峰式规则(也可以设置为下划线)将源和目标字段名称进行拆分,根据匹配数量/源token数+目标token数,得到一个匹配的比率。比率越大,说明匹配度越高。最终,取得匹配权重最大的那个字段,其他字段被认为是有歧义的。
至此,ModelMapper的map方法的工作原理已经介绍完毕。中间可能有些遗漏的细节,或者有地方没有说清楚,欢迎大家和我一起讨论。在使用ModelMapper时,一定要注意字段名,如果有相近的字段名,必须认真核对匹配是否正确,必要时就采用严格匹配策略。
数据库查询中LIKE和NOT LIKE的应用
没有人不会经历孤独,但要学会在孤独中成长,在平凡中脱颖而出。成长本身就是一段逐渐孤独无援的旅程,你要努力变得强大,然后独当一面。
《VBA数据库解决方案》教程()是我推出的第二套教程,目前已经进行了第一版修订。这套教程针对中级学习者,是在学习字典后的另一个专题讲解。数据库是数据处理的强大工具,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。教程第一版的修订内容主要是完成所有程序文件的位和位OFFICE系统测试。
这套教程共有两册,八十四讲,未来一段时间将陆续推出修订后的教程内容。今天的内容是:数据库查询中LIKE和NOT LIKE的应用。
如果您已经对VBA有了一定的了解,可以根据自己的兴趣选择教程。经典组合3,2,9,第3套字典教程是数据处理必备的,第2套数据库是专业数据处理的工具,第9套教程是实用的典型案例讲解。对于数据处理而言,如果您数据量不是很大,字典可以优先选择。教程提供的程序源码文件就像一座大型的代码库,支持着大家的工作。同时,还有实用的资料送给学员。
我推出的VBA工具系列分为两类:一类是较易的YZ系列,一类是较难的NZ系列。这些工具是大家学习VBA的好帮手,其中NZ系列工具还有专门版本资料提供给已按部就班学习完我所有教程的学员。
第五十三讲 工作表数据查询时,LIKE和NOT LIKE的应用
大家好,我们继续讲解VBA数据库解决方案,今天讲解第讲内容:工作表查询时,类似筛选功能的LIKE和NOT LIKE的应用。大家在工作中,利用EXCEL操作,筛选是必不可少的工具之一。例如,我们可以筛选以某个字符开头的数据,或者筛选不以某个字符开始的数据,那么这个功能如何在ADO连接EXCEL进行查询时实现呢?
应用场景的具体分析
实例讲解,我们看下面的数据:
我们要筛选出以W开始的生产厂的数组和不是以W开始的数据。如何实现呢?
ADO连接工作表中,LIKE和NOT LIKE的应用代码及代码解读
下面看我给出的代码:
Sub mynzRecords_() '第讲 工作表数据查询时,类似筛选功能LIKE和NOT LIKE的应用.
Dim cnADO, rsADO As Object
Dim strPath, strSQL1, strSQL2, strSQL3, strSQL4 As String
Worksheets("").Select
Cells.ClearContents
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.FullName
cnADO.Open "provider=Microsoft.ACE.OLEDB..0;extended properties='excel .0;hdr=yes;imex=1';data source=" & strPath
strSQL1 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 Like 'W%'"
arr = Array("型号", "生产厂", "供应商", "数量")
[a1:d1] = arr
[a].End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL1)
strSQL2 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 NOT Like 'W%'"
[a].End(xlUp).Offset(2, 0).CopyFromRecordset cnADO.Execute(strSQL2)
cnADO.Close
Set cnADO = Nothing
Set rsADO = Nothing
End Sub
代码截图:
代码解释:
1)strSQL1 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 Like 'W%'"
这句的解释是要查出以W开始的生产厂的记录。大家要注意这种写法。需要注意的是,这种写法要特别注意。要记住代码尽可能不要录入,要以拷贝为主,然后再做必要的修正。
2)strSQL2 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 NOT Like 'W%'"
这句的解释是要查出不是以W开始的生产厂的记录。这里用的是NOT LIKE 语句。也是一种SQL语句的固定用法。
我最近在讲各种这样的连接啊,查询结构啊,大家要注意我的语句写法,如果语句不对是得不到正确结果的。我的系列文章在讲我的经验,甚至代码中也有工作实例的影子。要学写代码的经验,我们的工作要以实用为主,不是学术的研究。
下面看代码的运行:
今日内容回向:
1 如何实现工作表的筛选功能?
2 LIKE 和 NOT LIKE 的语法是怎么样的?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我多年的VBA实践经验,全部浓缩在下面的各个教程中:
分享成果,随喜正能量人生于世,就得有点兴致,闲暇之时,或乐游山水、或尽享食味、或寄情岁时,它让我们的生活变得充盈。