测试Mybatis批量查询和使用HashMap查询效率

测试Mybatis批量查询和使用HashMap查询效率,第1张

Mybaits批量查询  多次点击最终稳定在11秒左右

HashMap查询  多次点击最终稳定在37秒左右

Mybaits批量查询  多次点击最终稳定在25秒左右

HashMap查询  多次点击最终稳定在42秒左右

Mybaits批量查询  多次点击最终稳定在35秒左右

HashMap查询  多次点击最终稳定在44秒左右

Mybaits批量查询  多次点击最终稳定在45秒左右

HashMap查询  多次点击最终稳定在43秒左右

Mybaits批量查询  多次点击最终稳定在6秒左右

HashMap查询  多次点击最终稳定在41秒左右

后面数据就不测了,如果你某个项目需要这样一种业务场景,你需要在循环里拿到对应条件进行查询时,

你可以选择把条件都存到集合里,然后再进行Mybaits的批量查询,你也可以先将所有数据查询出来,塞进Map里,然后依次从Map里取出。当你需要的数据占总数据的40%以下时,使用Mybatis批量查询可能更好一些,当数据占比超过40%时,使用Map更好一些。

注:以上数据和结论仅供参考,本人心血来潮进行的一波测试,纯属娱乐!!!

不使用@Param注解时

当传入的参数只有一个时,在test语句中必须使用 _parameter 获取这个参数

在sql中则 #{}可以通过任意的key来获取这个参数

所以这里when test 中使用的_parameter代表这个参数,而在sql中使用#{keyword}代表这个参数

LOCATE(substr,str,pos) 这是sql的函数,返回第一次出现在字符串str的子串substr的位置,从位置pos开始,substr不在str中,则返回0。

所以LOCATE(#{keyword}, pproject_name,1)>0 和 pproject_name = #{keyword} 是不一样的条件。它等价于 pproject_name like ‘%#{keyword}%’,当然这里不能直接这么写,要使用like在mybatis的sql中需要使用CONCAT函数。

LOCATE(#{keyword}, pproject_name,1)>0 等价于 pproject_name like CONCAT('%',#{keyword},'%')

工具是Myeclipse10和mybatis-generator-core-131,数据库是oracle 1下载mybatis-generator-core-131-bundle,导入mybatis-generator-core-131jar和myeclipse311jar 2编写生成器的配置文件generatorConfigxml 这个配置文件是生成器

<select id="getList" parameterType="ActRebate" resultMap="actRebateResultMap">

select t from t_rule_rebate t where (merchantId IS null OR tmerchantid = #{merchantId} )

AND (ztbz IS null OR trim(tztbz) = #{ztbz})

AND (type IS null OR trim(ttype) = #{type})

</select>

传进去的参数就不要在SQL中做处理了。。。。参数在传之前处理。

mybatis的批量 *** 作有两种方式,一是使用foreach标签,二是使用mybatis的BATCH模型

在xml中通过foreach对表数据进行循环 *** 作

在oracle中不支持insert into product(name, type, price) values ('a', 'tv', 1233), ('b', 'ac', 3455),('','','')这种形式的sql,因此oracle批量插入使用 insert all into table() values() into table() values() select from dual; 语句来解决以下方式,并且需要显示指定useGeneratedKeys=false

另一种方法是使用另外一种方法是 insert into table() (select from dual) union all (select from dual)

Mybatis内置的ExecutorType一共有三种,默认为SIMPLE,该模式下它为每个语句的执行创建一个新的预处理语句,并单条提交sql。

BATCH 模式会重复使用已经预处理的语句,并且批量执行所有更新语句,显然batch性能将更优;

注意 : batch模式也有自己的问题,比如在Insert *** 作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的。

具体用法如下:

ProductMapperjava 如下:

mapperxml 如下:

以上就是关于测试Mybatis批量查询和使用HashMap查询效率全部的内容,包括:测试Mybatis批量查询和使用HashMap查询效率、mybatis中关于查询传参的问题、mybatis generator 怎么查询数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10196998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存