mybatis sql查询慢

摘要:
在mybatis为持久化的java框架中,mapper和xml文件映射的sql,有时在实际执行时会很慢,甚至一直查询不出来,调查发现原因有二:1.参数化写法不同,执行逻辑不同。

在mybatis为持久化的java框架中,mapper和xml文件映射的sql,有时在实际执行时会很慢,甚至一直查询不出来,调查发现原因有二:

1.参数化写法不同,执行逻辑不同。例如:#{param},${'param'}

#符号标记的参数,在mybatis执行sql时,使用PreparedStatement对象,包含预编译sql操作,能防止sql注入安全问题,单次执行不如Statement,批量执行时能提高效能;

$符号标记的参数,在mybatis执行sql时,使用Statement对象,不包含预编译操作,直接拼装sql语句成string执行,无法避免sql注入,单次执行速度快;

这两种方式优缺点互为,一般建议使用#{param},但在实际项目中,如果只有单次的sql操作,在不影响安全的前提下,可以使用${'param'}方式

注:#{param}参数化到sql会自动为param加引号,${'param'}方式不会,所以调用${'param'}需要在括号中加引号,也由于这种特性,一般参数化select,table等sql标签用$方式,避免自动加入引号

2.sql语句大小写替换

同事提供,本来项目中为了图方便都是小写sql语句,替换小写语句为大写也能提高一些sql执行速度,待实验

免责声明:文章转载自《mybatis sql查询慢》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇字符串常量池---JavaUnity学习——纹理、材质&着色器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mybatis返回map类型数据空值字段不显示的解决方法

在日常开发中,查询数据返回类型为map,数据库中有些自动值为null,则返回的结果中没有值为空的字段,则如何显示值为空的字段呢?  Spring boot + MyBatis返回map中null值默认不显示,如要调整为null值显示需要在配置文件中添加属性,如下图红框中所示: 2、Mybatis使用IFNULL(P1,P2)函数...

Springboot + Mybatis 多数据源配置

1、src/main/resources/application.properties 中配置好多个数据源   spring.datasource.initialize=false  #接口请求端口号、路径  server.port=9090  servcer.context-path=/  #mybatis配置  #mybatis.config-loca...

SpringBoot+Mybatis---这一篇就够了!

typora-copy-images-to: SpringBoot+Mybatisimages SpringBoot整合MyBatis ------ 既然你都开始整合Mybatis了,我相信基本的SpringBoot项目创建你自己肯定是可以搞定的,所以我在这里就不多赘述了,话不多B,让我们直奔主题 MyBatis---半自动ORM框架 现如今,常见的持久...

利用mybatis连接mysql数据库进行数据的操作

整体结构如下: 首先写大配置,该配置的作用是连接数据库。    可以将连接数据库的方法单独提出来,写在jdbc.propterties中,代码如下: jdbc.driver=com.mysql.jdbc.Driver //加载驱动jdbc.url=jdbc:mysql://localhost:3306/school //连接mysql数据库jdbc...

mybatis一对多分页查询

今天遇到一个问题,当用户关联角色查询翻页时,如果一个用户有多个角色,会认为是多条记录,页面加载的时候就会发现记录数不对。 为了解决这个问题,我打算分两次查询,第一次只按分页查询出当前页应该展示的用户id列表,然后根据这个idlist去关联查询用户和角色的所有要用到的字段 java public Map<String, Object> selec...

autowire异常的三个情况

2010-3-11 16:06:00 net.sf.ehcache.config.ConfigurationFactory parseConfiguration   警告: No configuration found. Configuring ehcache from ehcache-failsafe.xml  found in the classpa...